about summary refs log tree commit diff
path: root/web/webqtl/schema
diff options
context:
space:
mode:
authorroot2012-05-08 18:39:56 -0500
committerroot2012-05-08 18:39:56 -0500
commitea46f42ee640928b92947bfb204c41a482d80937 (patch)
tree9b27a4eb852d12539b543c3efee9d2a47ef470f3 /web/webqtl/schema
parent056b5253fc3857b0444382aa39944f6344dc1ceb (diff)
downloadgenenetwork2-ea46f42ee640928b92947bfb204c41a482d80937.tar.gz
Add all the source codes into the github.
Diffstat (limited to 'web/webqtl/schema')
-rwxr-xr-xweb/webqtl/schema/ShowCommentPage.py123
-rwxr-xr-xweb/webqtl/schema/ShowSchemaPage.py194
-rwxr-xr-xweb/webqtl/schema/UpdateCommentPage.py101
-rwxr-xr-xweb/webqtl/schema/__init__.py0
4 files changed, 418 insertions, 0 deletions
diff --git a/web/webqtl/schema/ShowCommentPage.py b/web/webqtl/schema/ShowCommentPage.py
new file mode 100755
index 00000000..449fd56a
--- /dev/null
+++ b/web/webqtl/schema/ShowCommentPage.py
@@ -0,0 +1,123 @@
+# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU Affero General Public License for more details.
+#
+# This program is available from Source Forge: at GeneNetwork Project
+# (sourceforge.net/projects/genenetwork/).
+#
+# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
+# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
+#
+#
+#
+# This module is used by GeneNetwork project (www.genenetwork.org)
+#
+# Created by GeneNetwork Core Team 2010/08/10
+#
+# Last updated by GeneNetwork Core Team 2010/10/20
+
+import sys
+
+from htmlgen import HTMLgen2 as HT
+
+from base.templatePage import templatePage
+from base import webqtlConfig
+
+
+
+class ShowCommentPage(templatePage):
+    def __init__(self,fd):
+        sys.stderr = sys.stdout
+
+        templatePage.__init__(self, fd)
+
+        if not self.openMysql():
+        #{
+            print 'Content-type: text/html\n'
+            print 'Can not update the comment of %s' %(TableName)
+            return
+        #}
+
+        Cursor_Comment = self.cursor
+        TableName = fd.formdata.getfirst('TableName')
+
+        SqlCmd = 'select Comment from TableComments where TableName=\'%s\'' %(TableName)
+        Cursor_Comment.execute(SqlCmd)
+        Comment = Cursor_Comment.fetchall()
+        if Comment:
+           Comment = Comment[0][0]
+           if str(Comment)=='None':
+              Comment=''
+        else:
+           Comment = ''
+
+        ##########setup HtmlForm Comment##########
+        HtmlInputHidden_TableName = HT.Input(type='hidden', name='TableName', value=TableName)
+        HtmlInputHidden_ActionID = HT.Input(type='hidden', name='ActionID', value='UpdateComment')
+        HtmlTextarea_Comment = HT.Textarea(name='Comment', text=Comment, rows=8, cols=100)
+
+        HtmlForm_Comment = HT.Form(cgi=webqtlConfig.CGIDIR+'main.py?FormID=schemaUpdateComment')
+        HtmlForm_Comment.append('<B>%s</B><BR><BR>' %(TableName))  #show table's name
+        HtmlForm_Comment.append('<B><I>Comment:</I></B><BR>')           #show table's comment
+        HtmlForm_Comment.append(HtmlTextarea_Comment)
+        HtmlForm_Comment.append('<BR>')
+        HtmlForm_Comment.append(HtmlInputHidden_TableName)
+        HtmlForm_Comment.append(HtmlInputHidden_ActionID)
+
+        ###########################
+        #update fields' annotation#
+        ###########################
+        HtmlForm_Comment.append('<BR><BR>')
+
+        try:
+        #{
+            HtmlTR_Annotation = []
+            Cursor_Comment.execute('desc %s' %(TableName))
+            TableDesc = Cursor_Comment.fetchall()
+            for i in range(0, len(TableDesc)):
+            #{
+                TableField = TableName+'.'+str(TableDesc[i][0])
+                TableFieldForeignKey = TableField+'ForeignKey'
+                TableFieldAnnotation = TableField+'Annotation'
+                HtmlText_ForeignKey = HT.Input(type='text', name=TableFieldForeignKey, size=20)
+                HtmlText_Annotation = HT.Input(type='text', name=TableFieldAnnotation, size=80)
+
+
+                Cursor_Comment.execute('select Annotation, Foreign_Key from TableFieldAnnotation where TableField=%s', (TableField))
+                Annotation = Cursor_Comment.fetchone()
+                if Annotation:
+                #{
+                    if str(Annotation[1]) != 'None':
+                        HtmlText_ForeignKey.value=Annotation[1]
+                    if str(Annotation[0]) != 'None':
+                        HtmlText_Annotation.value=Annotation[0].replace('"', '&quot;')
+                #}
+                HtmlTD_Annotation = []
+                HtmlTD_Annotation.append(TableField)
+                HtmlTD_Annotation.append(HtmlText_ForeignKey)
+                HtmlTD_Annotation.append(HtmlText_Annotation)
+   
+                HtmlTR_Annotation.append(HtmlTD_Annotation)
+            #}
+
+            HtmlTable_Annotation= HT.Table(border=0, width='0%', heading=['Field', 'Foreign_Key', 'Annotation'], body = HtmlTR_Annotation)
+            HtmlForm_Comment.append(HtmlTable_Annotation)
+        #}
+        except:
+            pass
+
+        HtmlForm_Comment.submit.value='submit'
+        HtmlForm_Comment.reset = HT.Input(type='reset', name='reset', value='reset')
+        ##########end of HtmlForm##########
+
+        self.dict['body'] = HtmlForm_Comment
+
+
diff --git a/web/webqtl/schema/ShowSchemaPage.py b/web/webqtl/schema/ShowSchemaPage.py
new file mode 100755
index 00000000..e9ced5a1
--- /dev/null
+++ b/web/webqtl/schema/ShowSchemaPage.py
@@ -0,0 +1,194 @@
+# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU Affero General Public License for more details.
+#
+# This program is available from Source Forge: at GeneNetwork Project
+# (sourceforge.net/projects/genenetwork/).
+#
+# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
+# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
+#
+#
+#
+# This module is used by GeneNetwork project (www.genenetwork.org)
+#
+# Created by GeneNetwork Core Team 2010/08/10
+#
+# Last updated by GeneNetwork Core Team 2010/10/20
+
+import sys
+
+from htmlgen import HTMLgen2 as HT
+
+from base.templatePage import templatePage
+from base import webqtlConfig
+from utility import webqtlUtil
+
+
+
+###################################################
+#Description: show the schema of webqtl's database#
+#Author: Hongqiang Li                             #
+#Version: 1.0                                     #
+###################################################
+
+class ShowSchemaPage(templatePage):
+    def __init__(self,fd):
+	cookies = fd.cookies
+        sys.stderr = sys.stdout
+        templatePage.__init__(self, fd)
+        body = HT.SimpleDocument()
+
+        ###############################################################################
+        #get user's privilege from cookie, if the user doesn't have enough privilege, #
+        #he won't see the update comment icon                                         #
+        ###############################################################################
+        ShowUpdateIcon = False 
+
+        if not self.openMysql():
+           return
+
+        Cursor_WebQtl = Cursor_Comment = self.cursor
+
+        if webqtlConfig.USERDICT[self.privilege] >= webqtlConfig.USERDICT['user']:
+			ShowUpdateIcon = True
+
+        ##################
+        #show description#
+        ##################
+        body.append('<BR>')
+        body.append('<H1>')
+        body.append('Description of Schema')
+        if ShowUpdateIcon:
+        #{
+            # Modified by Hongqiang Li
+            # Image_Update = HT.Image('http://web2qtl.utmem.edu/images/modify.gif')
+            Image_Update = HT.Image('/images/modify.gif')
+            #
+            Href_Update = HT.Href(webqtlConfig.CGIDIR+'main.py?FormID=schemaShowComment&TableName=Description_of_Schema', Image_Update)
+            body.append(Href_Update)
+        #}
+        body.append('</H1>')
+         
+        Cursor_WebQtl.execute('select Comment from TableComments where TableName=\'Description_of_Schema\'')
+        Comment = Cursor_WebQtl.fetchone();
+        if Comment:
+            if str(Comment[0])!='None':
+                body.append(Comment[0])
+
+        body.append('<HR WIDTH=100%>')
+        body.append('<H2>Tables</H2>')
+
+        ##################
+        #show table names#
+        ##################
+        Cursor_WebQtl.execute('show tables')
+        Tables=Cursor_WebQtl.fetchall()
+        BlockedTables = ['User', 'TableComments', 'TableFieldAnnotation', 'ProbeSetXRef_TEMP', 'DBList', 'DBType', 'HumanGene', 'LCorr', 'Temp', 'TempData']
+        for i in range(0, len(Tables)):
+        #{
+            TableName = Tables[i][0]
+            if TableName in BlockedTables: #skip the table who is blocked
+                continue
+
+            HrefTable_Schema = HT.Href(webqtlConfig.CGIDIR+'main.py?FormID=schemaShowPage#'+TableName, TableName)
+            body.append(str(HrefTable_Schema)+'<BR>')
+        #}
+        body.append('<hr width=100%>')
+    
+        for i in range(0, len(Tables)):
+        #{
+            TableName = Tables[i][0]
+            if TableName in BlockedTables: #skip the table who is blocked
+                continue
+
+            #####################
+            #get table's comment#
+            #####################
+            SqlCmd = 'select Comment from TableComments where TableName=\'%s\'' %(TableName)
+            Cursor_WebQtl.execute(SqlCmd)
+            Comment = Cursor_WebQtl.fetchall()
+
+            ####################################
+            #get the content of a table's schma#
+            ####################################
+            Cursor_WebQtl.execute('desc %s' %(TableName))
+            TableDesc = Cursor_WebQtl.fetchall();
+
+            HtmlTR_Schema = []
+            for row in range(0, len(TableDesc)):
+            #{
+                HtmlTD_Schema = []
+                for col in range(0, len(TableDesc[row])):
+                    if str(TableDesc[row][col])=='None' or str(TableDesc[row][col])=='': #just means I don't want show 'None' *_^
+                       HtmlTD_Schema.append('&nbsp;')
+                    else:
+                       HtmlTD_Schema.append(TableDesc[row][col])
+
+                ##############################
+                #get table fileds' annotation#
+                ##############################
+                TableField = TableName+'.'+TableDesc[row][0]
+                Cursor_WebQtl.execute('select Annotation, Foreign_Key from TableFieldAnnotation where TableField=%s', (TableField))
+                Annotation = Cursor_WebQtl.fetchone();
+                if Annotation:
+                #{
+                    if str(Annotation[1])=='None' or str(Annotation[1])=='':
+                        HtmlTD_Schema.append('&nbsp;')
+                    else:
+                        HtmlTD_Schema.append(Annotation[1])
+                    if str(Annotation[0])=='None' or str(Annotation[0])=='':
+                        HtmlTD_Schema.append('&nbsp;')
+                    else:
+                        HtmlTD_Schema.append(Annotation[0])
+                #}
+                else:
+                #{
+                    HtmlTD_Schema.append('&nbsp;')
+                    HtmlTD_Schema.append('&nbsp;')
+                #}
+
+            	HtmlTR_Schema.append(HtmlTD_Schema)
+            #}
+
+            ###############################
+            #Html code of a table's schema#
+            ###############################
+            body.append(HT.NAME(TableName, TableName))
+            if ShowUpdateIcon:
+            #{
+                # Modified by Hongqiang Li
+                #Image_Update = HT.Image('http://web2qtl.utmem.edu/images/modify.gif')
+                Image_Update = HT.Image('/images/modify.gif')
+                #
+                Href_Update = HT.Href(webqtlConfig.CGIDIR+'main.py?FormID=schemaShowComment&TableName=%s' %(TableName), Image_Update)
+                body.append(Href_Update)
+            #}
+            body.append('<BR><BR>')
+
+            body.append('<B>Comment:</B><BR>')
+            #body.append("<I>")
+            if Comment:
+                if str(Comment[0][0])!='None':
+                    for content in Comment[0][0].split('\n'):
+                        body.append(content)
+                        body.append('<BR>')
+            #body.append("</I>")
+
+            HtmlTable_Schema = HT.Table(width='0%', heading=['Field', 'Type', 'Null', 'Key', 'Default', 'Extra', 'Foreign_Key', 'Annotation'], body = HtmlTR_Schema)
+            body.append(HtmlTable_Schema)
+            body.append('<hr width=100%>')
+        #}
+
+        self.dict['body'] = body
+
+
+
diff --git a/web/webqtl/schema/UpdateCommentPage.py b/web/webqtl/schema/UpdateCommentPage.py
new file mode 100755
index 00000000..eb1dbb67
--- /dev/null
+++ b/web/webqtl/schema/UpdateCommentPage.py
@@ -0,0 +1,101 @@
+# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU Affero General Public License for more details.
+#
+# This program is available from Source Forge: at GeneNetwork Project
+# (sourceforge.net/projects/genenetwork/).
+#
+# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
+# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
+#
+#
+#
+# This module is used by GeneNetwork project (www.genenetwork.org)
+#
+# Created by GeneNetwork Core Team 2010/08/10
+#
+# Last updated by GeneNetwork Core Team 2010/10/20
+
+import sys
+
+from htmlgen import HTMLgen2 as HT
+
+from base.templatePage import templatePage
+from base import webqtlConfig
+
+
+class UpdateCommentPage(templatePage):
+    def __init__(self,fd):
+        sys.stderr = sys.stdout
+        templatePage.__init__(self, fd)
+        body = HT.SimpleDocument()        
+
+        if not self.updMysql():
+        #{
+            print 'Content-type: text/html\n'
+            print 'Can not update the comment of %s' %(TableName)
+            return
+        #}
+
+
+        Cursor_Comment=self.cursor
+        TableName = fd.formdata.getfirst('TableName')
+        Comment = fd.formdata.getfirst('Comment')
+
+        ########################
+        #update table's comment#
+        ########################
+        Cursor_Comment.execute('select * from TableComments where TableName=%s', (TableName))
+        if Cursor_Comment.fetchall():
+            Cursor_Comment.execute('update TableComments set Comment=%s where TableName=%s', (Comment, TableName))
+        else:
+            Cursor_Comment.execute('insert into TableComments values(%s,%s)', (TableName, Comment))
+
+
+        #################################
+        #update table fields' annotation#
+        #################################
+        try:
+        #{
+            Cursor_Comment.execute('desc %s' %(TableName))
+            TableDesc = Cursor_Comment.fetchall()
+            for i in range(0, len(TableDesc)):
+            #{
+                TableField = TableName+'.'+str(TableDesc[i][0])
+                TableFieldForeignKey = TableField+'ForeignKey'
+                TableFieldAnnotation = TableField+'Annotation'
+
+                ForeignKey = fd.formdata.getfirst(TableFieldForeignKey)
+                if ForeignKey == 'None':
+                    ForeignKey=''
+                Annotation = fd.formdata.getfirst(TableFieldAnnotation)
+                if Annotation == 'None':
+                    Annotation='&nbsp;'
+
+                Cursor_Comment.execute('select * from TableFieldAnnotation where TableField=%s', (TableField))
+                if Cursor_Comment.fetchall():
+                    Cursor_Comment.execute('update TableFieldAnnotation set Foreign_Key=%s, Annotation=%s where TableField=%s', (ForeignKey, Annotation, TableField))
+                else:
+                    Cursor_Comment.execute('insert into TableFieldAnnotation values(%s,%s,%s)', (TableField, ForeignKey, Annotation))
+            #}
+        #}
+        except:
+            pass
+
+        HtmlHref = HT.Href(webqtlConfig.CGIDIR+'main.py?FormID=schemaShowPage#%s' %(TableName), 'table')
+        HtmlBlock = HT.Blockquote();
+        HtmlBlock.append('This ')
+        HtmlBlock.append(HtmlHref)
+        HtmlBlock.append('\'s comment has been succesfully updated')
+
+        body.append(HtmlBlock)
+        self.dict['body'] = body
+
diff --git a/web/webqtl/schema/__init__.py b/web/webqtl/schema/__init__.py
new file mode 100755
index 00000000..e69de29b
--- /dev/null
+++ b/web/webqtl/schema/__init__.py