def verifyUserPass(): db = pmt_utils.connectDB(declarations.pmt_info['browser_username'], declarations.pmt_info['browser_password'], declarations.pmt_info['db_name']) # could not connect to db if db['status'] != 'success': message= "Can not connect to database,\n" + db['message'] pmt_utils.alertsArea(form,message) displayLogin(form) sys.exit(1) status, details = db_authentication.password_valid(db['result'], crypt_salt=db_name, username=username, password=password) if status != 'success': displayLogin(form,details) sys.exit(1) cvs_web_priv=pmt_utils.hasPriv(db['result'],username,'cvs_web') cvs_export_priv=pmt_utils.hasPriv(db['result'],username,'cvs_export') if cvs_web_priv==0 and cvs_export_priv==0: message='User %s does not have access to CVS' % username displayLogin(form, message) sys.exit() return cvs_web_priv,cvs_export_priv
def doEdit(): status, table_data, db = pageInit("Edit", formJS=1) if status != 'success': message = "Could not connect to the database\n" + status exit(message.table_data, db) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details, table_data, db) sqlStatement = pmt_utils.selectAllColumnsSqlStatement( table_data, 'ecp', form["key_id"].value) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': message = "Could not retrieve item.\n" + dbResult['message'] exit(message, table_data, db) result = dbResult['result'] table_data = pmt_utils.dbToTableData(table_data, 'ecp', result[0]) display_questionnaire(db, table_data, 'edit') pmt_utils.alertsArea(form, "Item data retrieved successfully") del_priv = pmt_utils.hasPriv(db, username, 'del_ecp') list_url = '/%s-cgi-bin/ecp_admin.pyc?performDbQuery=1' % (db_name) help_url = "/%s/html/ecp_intro.html" % db_name editFunctionButtons(form["key_id"].value, list_url, help_url, del_priv) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pmt_utils.textbox(None, 'analyst_signature', table_data['ecp']['analyst_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'swm_analysis_signature', table_data['ecp']['swm_analysis_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'swm_completion_signature', table_data['ecp']['swm_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'gccb_signature', table_data['ecp']['gccb_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'ccb_signature', table_data['ecp']['ccb_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'qa_completion_signature', table_data['ecp']['qa_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'test_completion_signature', table_data['ecp']['test_completion_signature']['value'], '40', '40', None, None, 'hidden') pageEnd(table_data, db)
def doView(): status,table_data,db=pageInit("View",formJS=1) if status != 'success': message='Could not connect to db.\n%s' % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) sqlStatement = pmt_utils.selectAllColumnsSqlStatement(table_data, 'spr', form["key_id"].value) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': message="Item data could not be retrieved.\n" + dbResult['message'] exit(message) result = dbResult['result'] table_data = pmt_utils.dbToTableData(table_data, 'spr', result[0]) display_questionnaire(db,table_data, 'read-only') listing_url='/%s-cgi-bin/spr_admin.pyc?performDbQuery=1' % (db_name) help_url='/%s/html/sprsum.html' % (db_name) emailButton(username,form['key_id'].value,listing_url, help_url) pageEnd(table_data,db)
def doDelete(): dbResult = pmt_utils.connectDB(declarations.pmt_info['browser_username'], declarations.pmt_info['browser_password'], declarations.pmt_info['db_name']) if dbResult['status'] != 'success': onQueryLoad = 'displayWindow("Could not connect to the database")' message = "Could not connect to the database.\n%s" % dbResult['message'] exit(message) db = dbResult['result'] status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) sqlStatement = "DELETE FROM inventory WHERE id = '%s'" % ( form["key_id"].value) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': onQueryLoad = "return displayWindow('Could not delete item data')" else: onQueryLoad = "return displayWindow('Item data successfully deleted')" db.close() query_inventory(1)
def doCreate(): status, table_data, db = pageInit('Create', formJS=1) if status != 'success': message = "Could not connect to db,\n" + dbResult['message'] exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) display_questionnaire(db, table_data, 'edit') message = "Enter information on form and depress Create button" pmt_utils.alertsArea(form, message) listing_url = '/%s-cgi-bin/inv_admin.pyc?performDbQuery=1' % (db_name) help_url = '/%s/html/sprsum.html' % db_name pmt_utils.createFunctionButtons('create', listing_url, help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') po_id = table_data['inventory']['po_id']['value'] print '<input type=hidden name=po_id value="%s">' % po_id val = table_data['inventory']['prop_id_assigned_by_signature']['value'] pmt_utils.textbox(None, 'prop_id_assigned_by_signature', val, '40', '40', None, None, 'hidden') pageEnd(table_data, db)
def doSave(): saveDueToCreate = 0 status, table_data, db = pageInit('Save', formJS=1) if status != 'success': message = "Could not connect to db.\n" + status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) if form["key_id"].value == 'create': saveDueToCreate = 1 queryResult = pmt_utils.executeSQL(db, "SELECT NEXTVAL('pai_id_seq')") form["key_id"].value = ` queryResult['result'][0]['nextval'] ` dbResult = pmt_utils.saveForm(table_data, db, form['key_id'].value, "pai", " WHERE id = '%s'" % form["key_id"].value, form) if dbResult['status'] != 'success': message = "Action item could not be saved.\n" + dbResult['message'] exit(message) if saveDueToCreate: subject = 'New PAI #%s has been generated' % (form['key_id'].value) msg = "PAI #%s has been generated.\n\n" % form["key_id"].value msg = msg + "Assigned to: %s\n" % form['assigned_to'].value msg = msg + "Problem Description:\n%s" % form['action_required'].value msg = msg + "\n\nLog into the Project Action Item tracking tool at " msg = msg + "http://www.isrparc.org for further info.\n\n" msg = msg + "If you do not wish to be on this mailing list please " msg = msg + "send an email requesting removal to [email protected].\n" pmt_utils.emailList(db, 'localhost', 'pai_list', subject, msg) table_data = pmt_utils.formToTableData(table_data, 'pai', form, form['key_id'].value) pmt_utils.display_form(table_data, 'pai', 1, 'useValues', 1, db) pmt_utils.alertsArea(form, "Action item successfully saved") # generate function button row listing_url = '/%s-cgi-bin/pai_admin.pyc?performDbQuery=1' % (db_name) help_url = '/%s/html/paisum.html' % (db_name) editFunctionButtons(form["key_id"].value, listing_url, help_url) # generate hidden fields for form pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data, db)
def doCreate(): status, table_data, db = pageInit('Create', formJS=1) if status != 'success': message = "Item could not be created.\n" + status exit(message) # initialize form data values to zero or blank and set origination date table_data = pmt_utils.init_table_data(table_data, 'ecp') now = time_pkg.current_time_MM_DD_YYYY() table_data['ecp']['origination_date']['value'] = now status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) display_questionnaire(db, table_data, 'edit') # display alerts area to create message = "Enter information on form and depress Create button" pmt_utils.alertsArea(form, message) # create functions button row listing_url = '/%s-cgi-bin/ecp_admin.pyc?performDbQuery=1' % (db_name) help_url = "/%s/html/ecp_intro.html" % db_name pmt_utils.createFunctionButtons('create', listing_url, help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pmt_utils.textbox(None, 'analyst_signature', table_data['ecp']['analyst_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'swm_analysis_signature', table_data['ecp']['swm_analysis_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'swm_completion_signature', table_data['ecp']['swm_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'ccb_signature', table_data['ecp']['ccb_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'gccb_signature', table_data['ecp']['gccb_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'qa_completion_signature', table_data['ecp']['qa_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'test_completion_signature', table_data['ecp']['test_completion_signature']['value'], '40', '40', None, None, 'hidden') pageEnd(table_data, db)
def query_project_members(performDbQuery=0,onLoad=None,queryFields=None): status,table_data,db=pageInit('Members',formJS=0) if status != 'success': message='Could not connect to database.\n%s' % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) # Check for user admin privileges if pmt_utils.hasPriv(db, username,'user_admin')!=1: message='User %s does not have user admin privileges.' % username exit(message) queryFields,whereFields=pmt_utils.getQueryWhereFields(form, table_data, 'project_members') if queryFields == None or queryFields == []: queryFields = [] whereFields = None queryFields.append('first_name') queryFields.append('last_name') queryFields.append('phone_number_voice') dbResult,queryStatement=pmt_utils.executeQuery(db, table_data, 'project_members', queryFields, whereFields, 'query', queryItemFunctionsHtml, 'ORDER by last_name', ['id'], None,None, "return execute('query')", ["",""]) if dbResult['status'] != 'success': message="Could not get member data from db.\n%s" % dbResult['message'] exit(message) msg="Last Query Statement: %s\n" % queryStatement msg=msg+"%s project members retrieved from db" % `len(dbResult['result'])` pmt_utils.alertsArea(form,msg) # Add buttons and hidden fields help_url='/%s/html/contactsum.html' % db_name pmt_utils.queryFunctionButtons(1,help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data,db)
def query_spr(performDbQuery=0, onLoad=None, queryFields=None): status,table_data,db=pageInit('Problem Reports',formJS=0) if status != 'success': message="Can not connect to database.\n%s" % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) queryFields, whereFields = pmt_utils.getQueryWhereFields(form, table_data, 'spr') if queryFields == None or queryFields == []: queryFields = [] whereFields = None queryFields.append('id') queryFields.append('gist') queryFields.append('spr_status') queryFields.append('assigned_to') ignore_fields = ['analyst_signature_function', 'swm_analysis_signature_function', 'swm_completion_signature_function', 'test_completion_signature_function', 'cm_completion_signature_function', 'qa_completion_signature_function'] del_priv=pmt_utils.hasPriv(db, username, 'del_spr') dbResult,queryStatement=pmt_utils.executeQuery(db, table_data, 'spr', queryFields, whereFields, 'query', queryItemFunctionsHtml, 'ORDER by int4(id)', ['id','originator'], None, ignore_fields, "return execute('query')", ["","",del_priv]) if dbResult['status'] != 'success': message="Could not retrieve spr data from db.\n" + dbResult['message'] exit(message) msg="Last Query Statement: %s\n" % queryStatement msg=msg+"%s items retrieved from database." % `len(dbResult['result'])` exit(msg,table_data,db,display_login=0)
def query_project_members(performDbQuery=0, onLoad=None, queryFields=None): status, table_data, db = pageInit('Members', formJS=0) if username == None: message = "Unable to identify user." exit(message) if status != 'success': message = "Can not connect to database.\n" + dbResult['message'] exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) queryFields, whereFields = pmt_utils.getQueryWhereFields( form, table_data, 'project_members') if queryFields == None or queryFields == []: queryFields = [] whereFields = None queryFields.append('first_name') queryFields.append('last_name') queryFields.append('email') queryFields.append('phone_number_voice') queryFields.append('phone_extension') dbResult, queryStatement = pmt_utils.executeQuery( db, table_data, 'project_members', queryFields, whereFields, 'query', queryItemFunctionsHtml, 'ORDER by last_name', ['id', 'member_username'], None, ['member_password'], "return execute('query')", [username]) if dbResult['status'] != 'success': message = "Couldn't get user data from db.\n" + dbResult['message'] exit(message) pmt_utils.alertsArea(form, "Last Query Statement: "+queryStatement+\ "\n" + `len(dbResult['result'])` +\ " project members retrieved from db") queryFunctionButtons(1, '/%s/html/contactsum.html' % (db_name)) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data, db)
def doEdit(): status, table_data, db = pageInit("Edit", formJS=1) if status != 'success': message = "Could not connect to the database.\n" + status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) sqlStatement = pmt_utils.selectAllColumnsSqlStatement( table_data, 'inventory', form["key_id"].value) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': message = "Could not retrieve item to edit.\n" + dbResult['message'] exit(message) result = dbResult['result'] table_data = pmt_utils.dbToTableData(table_data, 'inventory', result[0]) display_questionnaire(db, table_data, 'edit') pmt_utils.alertsArea(form, "Item data retrieved successfully") pmt_utils.textbox( None, 'prop_id_assigned_by_signature', table_data['inventory']['prop_id_assigned_by_signature']['value'], '40', '40', None, None, 'hidden') listing_url = '/%s-cgi-bin/inv_admin.pyc?performDbQuery=1' % (db_name) help_url = '/%s/html/sprsum.html' % (db_name) po_id = table_data['inventory']['po_id']['value'] print '<input type=hidden name=po_id value="%s">' % po_id if form.has_key("return_to_po"): print '<input type=hidden name=return_to_po value=1>' java = "return goto_url('/%s-cgi-bin/po_admin.pyc?action=edit&key_id=%s')" % ( db_name, table_data['inventory']['po_id']['value']) html = '<INPUT NAME="edit" type="button" value=" Return to PO " onClick="%s">' % java print '<BR><BR>' print html editFunctionButtons(form["key_id"].value, listing_url, help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data, db)
def doEdit(): status,table_data,db = pageInit('Edit',formJS=1) if status!='success': message="Could not connect to db.\n%s" % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) sqlStatement = pmt_utils.selectAllColumnsSqlStatement(table_data, 'project_members', form["key_id"].value) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': message="Could not get project member data.\n%s" % dbResult['message'] exit(message) result = dbResult['result'] table_data=pmt_utils.dbToTableData(table_data,'project_members',result[0]) pmt_utils.display_form(table_data,'project_members', 1,'useValues', 1, db) # get user privileges and display them sqlStatement = "select * from priviledges where " +\ "member_username='******'" % (result[0]['member_username']) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': message="Could not get privileges from db.\n%s" % dbResult['message'] exit(message,table_data,db) result = dbResult['result'] table_data = pmt_utils.dbToTableData(table_data,'priviledges', result[0]) displayPriviledges(result[0], table_data) pmt_utils.alertsArea(form,"Project member data retrieved successfully") listing_url= '/%s-cgi-bin/project_members_admin.pyc?performDbQuery=1' % (db_name) help_url='/%s/html/contactsum.html' % db_name pmt_utils.editFunctionButtons(form["key_id"].value,listing_url,help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data,db)
def verifyUserPass(db): status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': displayLogin(form, details) #pmt_utils.alertsArea(form, details) sys.exit(1) if pmt_utils.hasPriv(db, username, 'list_docs') != 1: message = 'User %s does not have access to view Data Items' % username displayLogin(form, message) sys.exit(1)
def doSave(): status, table_data, db = pageInit('Save', formJS=0) if status != 'success': message = "Could not connect to db.\n" + status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) # save the Form dbResult = pmt_utils.saveForm(table_data, db, form['key_id'].value, "project_members", " WHERE id = '%s'" % form["key_id"].value, form) if dbResult['status'] != 'success': message = "Save error.\n" + dbResult['message'] exit(message) table_data = pmt_utils.formToTableData(table_data, 'project_members', form, form['key_id'].value) table_data['project_members']['member_username']['display'] = 'read-only' table_data['project_members']['member_role']['display'] = 'read-only' table_data['project_members']['member_password']['display'] = 'Hidden' pmt_utils.display_form(table_data, 'project_members', 1, 'useValues', 1, db) pmt_utils.alertsArea(form, "Member data successfully saved") # generate function button row listing_url = '/%s-cgi-bin/contact_list.pyc?performDbQuery=1' % db_name help_url = '/%s/html/contactsum.html' % (db_name) editFunctionButtons(form["key_id"].value, listing_url, help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data, db)
def query_ecp(performDbQuery=0, onLoad=None, queryFields=None): status, table_data, db = pageInit('Change Proposals', formJS=0) if status != 'success': message = "Cannot connect to db.\n%s" % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) queryFields, whereFields = pmt_utils.getQueryWhereFields( form, table_data, 'ecp') if queryFields == None or queryFields == []: queryFields = [] whereFields = None queryFields.append('id') queryFields.append('change_name') queryFields.append('ecp_status') ignore_fields = [ 'analyst_signature_function', 'swm_analysis_signature_function', 'swm_completion_signature_function', 'ccb_signature_function', 'gccb_signature_function', 'qa_completion_signature_function' ] del_priv = pmt_utils.hasPriv(db, username, 'del_ecp') dbResult, queryStatement = pmt_utils.executeQuery( db, table_data, 'ecp', queryFields, whereFields, 'query', queryItemFunctionsHtml, 'ORDER by int4(id)', ['id', 'originator'], None, ignore_fields, "return execute('query')", ["", "", del_priv]) if dbResult['status'] != 'success': message = "Unable to get ECP data from db.\n" + dbResult['message'] exit(message) message = "Last Query Statement: %s\n" % queryStatement message = message + ` len(dbResult['result']) ` + " items retrieved." exit(message, table_data, db, login_display=0)
def doEdit(): status, table_data, db = pageInit('Edit', formJS=0) if status != 'success': message = "Could not connect to db.\n%s" % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) sqlStatement = pmt_utils.selectAllColumnsSqlStatement( table_data, 'project_members', form["key_id"].value) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': message = "Unable to get member data from db.\n" + dbResult['message'] exit(message) result = dbResult['result'] table_data = pmt_utils.dbToTableData(table_data, 'project_members', result[0]) table_data['project_members']['member_username']['display'] = 'read-only' table_data['project_members']['member_password']['display'] = 'Hidden' table_data['project_members']['member_role']['display'] = 'read-only' pmt_utils.display_form(table_data, 'project_members', 1, 'useValues', 1, db) pmt_utils.alertsArea(form, "Member data retrieved successfully") listing_url = '/%s-cgi-bin/contact_list.pyc?performDbQuery=1' % db_name help_url = '/%s/html/contactsum.html' % (db_name) editFunctionButtons(form['key_id'].value, listing_url, help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data, db)
def doCreate(): status,table_data,db=pageInit('Create',formJS=1) if status != 'success': message="Could not connect to db,\n" + dbResult['message'] exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) display_questionnaire(db,table_data, 'edit') message="Enter information on form and depress Create button" pmt_utils.alertsArea(form,message) listing_url='/%s-cgi-bin/spr_admin.pyc?performDbQuery=1' % (db_name) help_url='/%s/html/spr_intro.html' % db_name pmt_utils.createFunctionButtons('create',listing_url,help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pmt_utils.textbox(None, 'analyst_signature', table_data['spr']['analyst_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'swm_analysis_signature', table_data['spr']['swm_analysis_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'swm_completion_signature', table_data['spr']['swm_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'test_completion_signature', table_data['spr']['test_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'cm_completion_signature', table_data['spr']['cm_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'qa_completion_signature', table_data['spr']['qa_completion_signature']['value'], '40', '40', None, None, 'hidden') pageEnd(table_data,db)
def doView(): status, table_data, db = pageInit("View", formJS=1) if status != 'success': message = 'Could not connect to db.\n%s' % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) sqlStatement = pmt_utils.selectAllColumnsSqlStatement( table_data, 'inventory', form["key_id"].value) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': message = "Item data could not be retrieved.\n" + dbResult['message'] exit(message) result = dbResult['result'] table_data = pmt_utils.dbToTableData(table_data, 'inventory', result[0]) display_questionnaire(db, table_data, 'read-only') listing_url = '/%s-cgi-bin/inv_admin.pyc?performDbQuery=1' % (db_name) help_url = '/%s/html/sprsum.html' % (db_name) emailButton(username, form['key_id'].value, listing_url, help_url) po_id = table_data['inventory']['po_id']['value'] print '<input type=hidden name=po_id value="%s">' % po_id if form.has_key("return_to_po"): print '<input type=hidden name=return_to_po value=1>' java = "return goto_url('/%s-cgi-bin/po_admin.pyc?action=edit&key_id=%s')" % ( db_name, table_data['inventory']['po_id']['value']) html = '<INPUT NAME="view" type="button" value=" Return to PO " onClick="%s">' % java print '<BR><BR>' print html pageEnd(table_data, db)
def validUserPass(username, password): dbResult = pmt_utils.connectDB(declarations.pmt_info['browser_username'], declarations.pmt_info['browser_password'], declarations.pmt_info['db_name']) # could not connect to db if dbResult['status'] != 'success': pmt_utils.htmlContentType() print '<html>' pmt_utils.alertsArea(form, "Can not connect to database") sys.exit(1) else: db = dbResult['result'] status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) return status
def query_inventory(performDbQuery=0, onLoad=None, queryFields=None): status, table_data, db = pageInit('Inventory', formJS=0) if status != 'success': message = "Can not connect to database.\n%s" % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) queryFields, whereFields = pmt_utils.getQueryWhereFields( form, table_data, 'inventory') if queryFields == None or queryFields == []: queryFields = [] whereFields = None queryFields.append('quantity') queryFields.append('part_number') queryFields.append('description') queryFields.append('unit_price') ignore_fields = [] del_priv = pmt_utils.hasPriv(db, username, 'del_inv') dbResult, queryStatement = pmt_utils.executeQuery( db, table_data, 'inventory', queryFields, whereFields, 'query', queryItemFunctionsHtml, 'ORDER by int4(id)', ['id'], None, ignore_fields, "return execute('query')", ["", "", del_priv]) if dbResult['status'] != 'success': message = "Could not retrieve inv data from db.\n" + dbResult['message'] exit(message) msg = "Last Query Statement: %s\n" % queryStatement msg = msg + "%s items retrieved from database." % ` len( dbResult['result']) ` exit(msg, table_data, db)
def verifyUserPass(): db = pmt_utils.connectDB(declarations.pmt_info['browser_username'], declarations.pmt_info['browser_password'], declarations.pmt_info['db_name']) # could not connect to db if db['status'] != 'success': displayLogin("Can not connect to database,\n" + db['message']) sys.exit(1) status, details = db_authentication.password_valid(db['result'], crypt_salt=db_name, username=username, password=password) if status != 'success': displayLogin(details) sys.exit(1) if pmt_utils.hasPriv(db['result'],username,'upload')==0: displayLogin('User %s does not have upload privileges' % username) sys.exit()
def query_pai(performDbQuery=0, onLoad=None, queryFields=None): status, table_data, db = pageInit("Action Items", formJS=0) if status != 'success': message = "Can not connect to database.\n%s" % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) queryFields, whereFields = pmt_utils.getQueryWhereFields( form, table_data, 'pai') if queryFields == None or queryFields == []: queryFields = [] whereFields = None queryFields.append('id') queryFields.append('gist') queryFields.append('assigned_to') del_priv = pmt_utils.hasPriv(db, username, 'del_pai') dbResult, queryStatement = pmt_utils.executeQuery( db, table_data, 'pai', queryFields, whereFields, 'query', queryItemFunctionsHtml, 'ORDER by int4(id)', ['id', 'originator'], None, None, "return execute('query')", ["", "", del_priv]) if dbResult['status'] != 'success': message = "Could not get pai data from db.\n" + dbResult['message'] exit(message) msg = "Last Query Statement: %s\n" % queryStatement msg = msg + "%s action items retrieved from db" % ` len( dbResult['result']) ` exit(msg, table_data, db, display_login=0)
def doEdit(): status, table_data, db = pageInit('Edit', formJS=1) if status != 'success': message = "Could not connect to the database.\n" + status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) sqlStatement = pmt_utils.selectAllColumnsSqlStatement( table_data, 'pai', form["key_id"].value) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': message = "Could not retrieve action item to edit.\n" + dbResult[ 'message'] exit(message) result = dbResult['result'] table_data = pmt_utils.dbToTableData(table_data, 'pai', result[0]) pmt_utils.display_form(table_data, 'pai', 1, 'useValues', 1, db) pmt_utils.alertsArea(form, "Action item data retrieved successfully") listing_url = '/%s-cgi-bin/pai_admin.pyc?performDbQuery=1' % (db_name) help_url = '/%s/html/pai_intro.html' % (db_name) del_priv = pmt_utils.hasPriv(db, username, 'del_pai') editFunctionButtons(form["key_id"].value, listing_url, help_url, del_priv) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data, db)
def verifyUserPass(db): status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': print "<form method=post>" pmt_utils.usernamePasswordDisplay() pmt_utils.alertsArea(form, details) print "<hr><INPUT TYPE='submit' NAME='submit' value='Submit' >" print "</form>" sys.exit(1) if pmt_utils.hasPriv(db, username, 'project_data')!=1: print "<form method=post>" pmt_utils.usernamePasswordDisplay() message='User %s does not have access to view Data Items' % username pmt_utils.alertsArea(form, message) print "<hr><INPUT TYPE='submit' NAME='submit' value='Submit' >" print "</form>" sys.exit(1)
def doCreate(): status, table_data, db = pageInit('Create', formJS=1) if status != 'success': message = "Could not connect to db.\n%s" % status exit(message) # initialize form data values to zero or blank table_data = pmt_utils.init_table_data(table_data, 'pai') now = time_pkg.current_time_MM_DD_YYYY() table_data['pai']['date_created']['value'] = now status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) table_data['pai']['id']['display'] = 'hidden' pmt_utils.display_form(table_data, 'pai', 1, 'useValues', 1, db) message = "Enter information on form and depress Create button" pmt_utils.alertsArea(form, message) # create functions button row listing_url = '/%s-cgi-bin/pai_admin.pyc?performDbQuery=1' % (db_name) help_url = '/%s/html/pai_intro.html' % (db_name) pmt_utils.createFunctionButtons('create', listing_url, help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data, db)
def display_form(display_files=0,alerts=None): print "<HTML>" print "<HEAD>" pmt_utils.javaScript("doc_maintenance") pmt_utils.title("Documentation Maintenance") print "</HEAD>" pmt_utils.bodySetup() pmt_utils.mainHeading('Documentation Maintenance') pmt_utils.subHeading('Create and Delete Folders/Files') pmt_utils.formSetup("doc_maintenance",db_name,"doc_maintenance",None) dbResult=pmt_utils.connectDB(declarations.pmt_info['browser_username'], declarations.pmt_info['browser_password'], declarations.pmt_info['db_name']) if dbResult['status']!='success': exit(dbResult['message']) db=dbResult['result'] status,details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status!='success': exit(details) if not pmt_utils.hasPriv(db,username,'folder_admin'): msg="User %s does not have folder maintenance priviledges" % username exit(msg) print '<hr><br><CENTER><B>Delete Folders/Files</B></CENTER>' stripped_db=string.lower(string.strip(db_name)) os.chdir(os.path.join('/home',stripped_db,'documents')) file_list = os_utils.walk_list_files( directory_name='.', list_only_files=0, exclude_list = [], include_file_type=1) if len(file_list) > 25: list_size = 25 else: list_size = len(file_list) print '<BLINK><B>WARNING:</B></BLINK><br>' print 'Any folders or files that you select for deletion are ' print 'permanently deleted. You should have a local backup of ' print 'any folders/files you delete in case you really did not mean ' print 'to delete. Backups are crucial. You have been warned.' print '<p>Selecting a folder will delete the folder and all files ' print 'under it including sub folders. ' print 'Select folder names with caution.' print '<p>Your deletes will not be confirmed. ' print 'When you press [Delete Folders/Files] your files are deleted.' print '<BR><CENTER><B>Select folders/files to delete</B>:<BR>' print '<SELECT NAME="files_to_remove" SIZE="8" MULTIPLE>' for curfile in file_list: print '<OPTION>%s' % (curfile) print "</SELECT><br>" java_call="return execute('delete_folder','1')" print '<input name="delete_folder" type="button" ' print 'value=" Delete Folders/Files " onClick="%s">' % java_call print '<input name ="website_name_hidden" ' print 'type="hidden" value="%s">' % (db_name) print "<hr><BR><BR>" print '<CENTER><B>Create Folder</B></CENTER><BR>' print '<B>Folder Name</B>: ' print '<input name="folder" type="text" size="50" maxlength="100"><BR>' java_call="return execute('create','1')" print '<input name="create" type="button" ' print 'value=" Create Folder " onClick="%s">' % java_call print '<input name ="website_name_hidden" ' print 'type="hidden" value="%s"><hr>' % (db_name) if alerts != None: pmt_utils.alertsArea(form,alerts) print '</CENTER>' pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'key_id', '1', '10', '10', None, None,'hidden') print '</form>' print '<p align="right">' print '<A HREF="mailto:[email protected]">Contact Support Team</a>' print "</body></html>"
# could not connect to db if dbResult['status'] != 'success': pmt_utils.htmlContentType() display_form( form, 'Password could not be updated. Can not connect to database.') sys.exit(1) else: db = dbResult['result'] status, details = db_authentication.password_valid( db, crypt_salt=declarations.pmt_info['db_name'], username=form['username'].value, password=form['current_password'].value) if status != 'success': pmt_utils.htmlContentType() display_form(form, details) sys.exit(1) if form['new_password'].value != form['verify_password'].value: pmt_utils.htmlContentType() display_form( form, 'Can not verify your password, your new password does not match your entry for the verify password.' ) sys.exit(1)
def doSave(): saveDueToCreate = 0 status, table_data, db = pageInit('Edit', formJS=1) if status != 'success': message = "Could not connect to db.\n%" % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) if form["key_id"].value == 'create': saveDueToCreate = 1 queryResult = pmt_utils.executeSQL( db, "SELECT NEXTVAL('inventory_id_seq')") form["key_id"].value = ` queryResult['result'][0]['nextval'] ` table_data = pmt_utils.formToTableData(table_data, 'inventory', form, form['key_id'].value) alerts = '' data = pmt_utils.process_signature( db, form['prop_id_assigned_by_username'].value, form['prop_id_assigned_by_password'].value, 'Property ID Authority', form['prop_id_assigned_by_signature'].value, form['prop_id_assigned_by_sig_func'].value) (status, details, table_data['inventory']['prop_id_assigned_by_username']['value'], table_data['inventory']['prop_id_assigned_by_password']['value'], table_data['inventory']['prop_id_assigned_by_signature']['value'], table_data['inventory']['prop_id_assigned_by_sig_func']['value']) = data dbResult = pmt_utils.saveForm(table_data, db, form['key_id'].value, "inventory", " WHERE id = '%s'" % form["key_id"].value, form, 0, 0) if dbResult['status'] != 'success': message = "Item could not be saved.\n" + dbResult['message'] exit(message) if saveDueToCreate: subject = 'New INV #%s has been generated' % form['key_id'].value # message='INV #%s has been generated.\n\n' % form["key_id"].value # message=message+'Assigned to: %s\n\n' % form['assigned_to'].value # message=message+'Problem Description is as follows:\n' # message=message+form['problem_description'].value+'\n\n' # message=message+'Log into the Inventory tracking tool at ' # message=message+'http://www.isrparc.org for further info.' # message=message+'If you do not wish to be on this mailing list ' # message=message+'please send an email requesting removal to ' # message=message+'[email protected].\n' # pmt_utils.emailList(db,'localhost', 'inv_list', subject, message) display_questionnaire(db, table_data, 'edit') alerts = alerts + '\nItem saved successfully' pmt_utils.alertsArea(form, alerts) listing_url = '/%s-cgi-bin/inv_admin.pyc?performDbQuery=1' % (db_name) help_url = '/%s/html/sprsum.html' % db_name # This will return to po_admin.py or inv_admin.py in Edit mode. if form.has_key("return_to_po"): data = '?action=edit&key_id=%s' % table_data['inventory']['po_id'][ 'value'] java = "return goto_url('/%s-cgi-bin/po_admin.pyc%s')" % (db_name, data) html = '<INPUT NAME="edit" type="button" value=" Return to PO ' html = html + '" onClick="%s">' % java print '<BR><BR>' print html editFunctionButtons(form["key_id"].value, listing_url, help_url) po_id = table_data['inventory']['po_id']['value'] print '<input type=hidden name=po_id value="%s">' % po_id val = table_data['inventory']['prop_id_assigned_by_signature']['value'] pmt_utils.textbox(None, 'prop_id_assigned_by_signature', val, '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pageEnd(table_data, db)
def edit_project_info(performDbQuery=0, onLoad=None, queryFields=None): table_data = declarations.define_tables() print "<HTML>" print "<HEAD>" pmt_utils.javaScript("project_admin") pmt_utils.title("Project Administration") print "</HEAD>" pmt_utils.bodySetup(onLoad) pmt_utils.mainHeading('Project Administration') pmt_utils.subHeading('Project Info') pmt_utils.formSetup("project_admin", db_name, "project_admin", "return submitForm(document.project_admin)") if username == None: pmt_utils.usernamePasswordDisplay() project_adminButtons(button_name='edit') pmt_utils.textbox(None, 'key_id', '1', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') print "</FORM>" try: pmt_utils.trailer(table_data, db) db.close() except NameError: pass print "</BODY>" print "</HTML>" return dbResult = pmt_utils.connectDB(declarations.pmt_info['browser_username'], declarations.pmt_info['browser_password'], declarations.pmt_info['db_name']) # could not connect to db if dbResult['status'] != 'success': pmt_utils.alertsArea( form, "Can not connect to database,\n" + dbResult['message']) project_adminButtons() print "</FORM>" try: pmt_utils.trailer(table_data, db) db.close() except NameError: pass print "</BODY>" print "</HTML>" return db = dbResult['result'] status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': print '<form method=post action=/%s-cgi-bin/project_admin.pyc>' % db_name pmt_utils.usernamePasswordDisplay(username) pmt_utils.alertsArea(form, 'Can not verify you as a valid user') print '<hr><input name=reload type=submit value="Query">' print '<input name=action value=edit type=hidden>' print '</form>' sys.exit() if pmt_utils.hasPriv(db, username, 'project_data') != 1: print '<form method=post action=/%s-cgi-bin/project_admin.pyc>' % db_name pmt_utils.usernamePasswordDisplay(username) msg = 'User %s does not have project admin privileges>' % username pmt_utils.alertsArea(form, msg) print '<hr><input name=reload type=submit value="Query">' print '<input name=action value=edit type=hidden>' print '</form>' sys.exit() if form.has_key('key_id'): key_id = form['key_id'].value else: key_id = '1' sqlStatement = pmt_utils.selectAllColumnsSqlStatement( table_data, 'project_info', key_id) dbResult = pmt_utils.executeSQL(db, sqlStatement) if dbResult['status'] != 'success': msg = "Could not retrieve project information\n" + dbResult['message'] pmt_utils.alertsArea(form, msg) else: result = dbResult['result'] table_data = pmt_utils.dbToTableData(table_data, 'project_info', result[0]) table_data['project_info']['id']['value'] = '1' pmt_utils.display_form(table_data, 'project_info', 1, 'useValues', 1, db) pmt_utils.alertsArea(form, "Project Information retrieved successfully") project_adminButtons(button_name='save') pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') print "</FORM>" try: pmt_utils.trailer(table_data, db) db.close() except NameError: pass print "</BODY>" print "</HTML>"
def doSave(): saveDueToCreate = 0 status,table_data,db=pageInit('Edit',formJS=1) if status != 'success': message="Could not connect to db.\n%" % status exit(message) status, details = db_authentication.password_valid(db, crypt_salt=db_name, username=username, password=password) if status != 'success': exit(details) if form["key_id"].value == 'create': saveDueToCreate = 1 queryResult = pmt_utils.executeSQL(db, "SELECT NEXTVAL('spr_id_seq')") form["key_id"].value = `queryResult['result'][0]['nextval']` table_data = pmt_utils.formToTableData(table_data, 'spr', form, form['key_id'].value) alerts = '' data=pmt_utils.process_signature(db, form['analyst_username'].value, form['analyst_password'].value, 'Analyst', form['analyst_signature'].value, form['analyst_signature_function'].value) (status, details, table_data['spr']['analyst_username']['value'], table_data['spr']['analyst_password']['value'], table_data['spr']['analyst_signature']['value'], table_data['spr']['analyst_signature_function']['value']) = data alerts = alerts + details data=pmt_utils.process_signature(db, form['swm_analysis_username'].value, form['swm_analysis_password'].value, 'Software Manager', form['swm_analysis_signature'].value, form['swm_analysis_signature_function'].value) (status, details, table_data['spr']['swm_analysis_username']['value'], table_data['spr']['swm_analysis_password']['value'], table_data['spr']['swm_analysis_signature']['value'], table_data['spr']['swm_analysis_signature_function']['value']) = data alerts = alerts + details data=pmt_utils.process_signature(db, form['swm_completion_username'].value, form['swm_completion_password'].value, 'Software Manager', form['swm_completion_signature'].value, form['swm_completion_signature_function'].value) (status, details, table_data['spr']['swm_completion_username']['value'], table_data['spr']['swm_completion_password']['value'], table_data['spr']['swm_completion_signature']['value'], table_data['spr']['swm_completion_signature_function']['value']) = data alerts = alerts + details data=pmt_utils.process_signature(db, form['test_completion_username'].value, form['test_completion_password'].value, 'Test Manager', form['test_completion_signature'].value, form['test_completion_signature_function'].value) (status, details, table_data['spr']['test_completion_username']['value'], table_data['spr']['test_completion_password']['value'], table_data['spr']['test_completion_signature']['value'], table_data['spr']['test_completion_signature_function']['value']) = data alerts = alerts + details data=pmt_utils.process_signature(db, form['cm_completion_username'].value, form['cm_completion_password'].value, 'CM Manager', form['cm_completion_signature'].value, form['cm_completion_signature_function'].value) (status, details, table_data['spr']['cm_completion_username']['value'], table_data['spr']['cm_completion_password']['value'], table_data['spr']['cm_completion_signature']['value'], table_data['spr']['cm_completion_signature_function']['value']) = data alerts = alerts + details data=pmt_utils.process_signature(db, form['qa_completion_username'].value, form['qa_completion_password'].value, 'QA Manager', form['qa_completion_signature'].value, form['qa_completion_signature_function'].value) (status, details, table_data['spr']['qa_completion_username']['value'], table_data['spr']['qa_completion_password']['value'], table_data['spr']['qa_completion_signature']['value'], table_data['spr']['qa_completion_signature_function']['value']) = data alerts = alerts + details dbResult = pmt_utils.saveForm(table_data, db, form['key_id'].value, "spr", " WHERE id = '%s'" % form["key_id"].value, form, 0, 0) if dbResult['status'] != 'success': message="Item could not be saved.\n" + dbResult['message'] exit(message) if saveDueToCreate: subject='New SPR #%s has been generated' % form['key_id'].value message='SPR #%s has been generated.\n\n' % form["key_id"].value message=message+'Assigned to: %s\n\n' % form['assigned_to'].value message=message+'Problem Description is as follows:\n' message=message+form['problem_description'].value+'\n\n' message=message+'Log into the System Problem Report tracking tool at ' message=message+'http://www.isrparc.org for further info.' message=message+'If you do not wish to be on this mailing list please ' message=message+'send an email requesting removal to [email protected].\n' pmt_utils.emailList(db,'localhost', 'spr_list', subject, message) display_questionnaire(db,table_data, 'edit') alerts = alerts + '\nItem saved successfully' pmt_utils.alertsArea(form,alerts) listing_url='/%s-cgi-bin/spr_admin.pyc?performDbQuery=1' % (db_name) help_url='/%s/html/sprsum.html' % db_name editFunctionButtons(form["key_id"].value, listing_url, help_url) pmt_utils.textbox(None, 'key_id', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'action', '', '10', '10', None, None, 'hidden') pmt_utils.textbox(None, 'item_no', '', '8', '8', None, None, 'hidden') pmt_utils.textbox(None, 'analyst_signature', table_data['spr']['analyst_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'swm_analysis_signature', table_data['spr']['swm_analysis_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'swm_completion_signature', table_data['spr']['swm_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'test_completion_signature', table_data['spr']['test_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'cm_completion_signature', table_data['spr']['cm_completion_signature']['value'], '40', '40', None, None, 'hidden') pmt_utils.textbox(None, 'qa_completion_signature', table_data['spr']['qa_completion_signature']['value'], '40', '40', None, None, 'hidden') pageEnd(table_data,db)