diff options
Diffstat (limited to 'web/webqtl/schema/ShowSchemaPage.py')
-rwxr-xr-x | web/webqtl/schema/ShowSchemaPage.py | 194 |
1 files changed, 194 insertions, 0 deletions
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(' ') + 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(' ') + else: + HtmlTD_Schema.append(Annotation[1]) + if str(Annotation[0])=='None' or str(Annotation[0])=='': + HtmlTD_Schema.append(' ') + else: + HtmlTD_Schema.append(Annotation[0]) + #} + else: + #{ + HtmlTD_Schema.append(' ') + HtmlTD_Schema.append(' ') + #} + + 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 + + + |