def printDocuementStart(): areaList = [] areaIDList = [] for area in areas: areaList.append(area['name']) areaIDList.append("<option value=" + str(area['area_id']) + ">" + area['name'] + "</option>") documentStart = """ <html> <head> <meta charset="UTF-8"> <title>Select an Area</title> </head> <body> <form method="get" action="/cgi-bin/location_table.py"> <h2>Select an Area</h2> <select name="area_id" size="10" multiple> """ listEnding = """ </select> <div style="text-align: center;"> <input type="submit" value="Submit" /> </div> </form> </body> </html> """ print(KJM_HTML_Utility.htmlHeader("Select an Area")) print(documentStart) for i in areaIDList: print("\t" + i) print(listEnding)
def printErrorMSG(formV): theMsg ="" if isinstance(formV, list): errorMSG = ''' You may only select a single value. <br><p>Form data received:\t{}</p>'''.format(formV) elif formV.isdigit(): errorMSG = ''' The location ID doesn't match any locations in the database. <br><p>Form data received:\t{}</p>'''.format(formV) elif formV == 'None': errorMSG = ''' No data was received. <br><p>Form data received:\t{} </p>'''.format(formV) elif str(formV).isalpha() or str(formV).isalnum(): errorMSG = ''' Only numerical values can be used to query data. <br>Form data received:\t{}<p> </p>'''.format(formV) else: errorMSG = ''' The location ID doesn't match any locations in the database. <br><p>Form data received:\t{} </p>'''.format(formV) print(KJM_HTML_Utility.htmlHeader("Error")) print(''' <body> <form method="post" action="/cgi-bin/area_selection.py"><h2>''') print(errorMSG) print(''' </h2></select> ''') print(''' <div style="text-align: center;"> <input type="submit" value="formAreaID"/> </body> </html> ''')
formAreaID = form.getvalue('area_id') if formAreaID is None: printErrorMSG('NoneType') elif isinstance(formAreaID, list): printErrorMsg(formAreaID) elif not db_access.get_area_by_id(formAreaID): printErrorMSG(formAreaID) # ------------------------------------| HTML Page start |------------------------------------ else: selectedArea = db_access.get_area_by_id(formAreaID) print(KJM_HTML_Utility.htmlHeader("Selected Area")) print(''' <body> ''') theAreaName = str() theAreaID = 0 for i in selectedArea: theAreaName = i['name'] theAreaID = i['area_id'] print("<h1>Location information for " + theAreaName +"</h1>") area_locations = db_access.get_locations_for_area(theAreaID) if area_locations: # create a table for the location
form = cgi.FieldStorage() try: formLocationID = form.getvalue('location_id') if not db_access.get_location_by_id(formLocationID): printErrorMSG(str(formLocationID)) # ------------------------------------| good data received |---------------------------------------------- else: selectedLocation = db_access.get_location_by_id(formLocationID) measurementsForSelectedLocation = db_access.get_measurements_for_location(formLocationID) # ------------------------------------| HTML Page start |------------------------------------ print(KJM_HTML_Utility.htmlHeader("Selected Location")) print(''' <body> ''') for i in selectedLocation: #header identify the area and location by name. locArea = db_access.get_area_by_id(i['location_area']) itsName = str() for aName in locArea: itsName = aName['name'] print("<h1>" + str(i['name']) + "</h1>\n<h2> Area: " + str(itsName) + "</h2>") if measurementsForSelectedLocation: print(u"""
<th>ID</th> <th>Area Name</th> <th># of Locations</th> <th>Avg Value</th> <th>Category</th> </tr> </thead> <tbody> """); return tableHeaderRowString # ------------------------------------| Pretty Print |---------------------------------------------- print(KJM_HTML_Utility.htmlHeader("Area Table")) print(getTableHeaderRow()) for area in areas: area_id = area['area_id'] area_location = db_access.get_locations_for_area(area_id) area_category = db_access.get_categories_for_area(area_id) avgMeasurementString = str(db_utility.get_average_measurements_for_area(area_id)) if not db_utility.get_average_measurements_for_area(area_id): avgMeasurementString = '--------' rowList = [area_id, area['name'], len(area_location), avgMeasurementString[1:5], getCategoryString(area_category)] for i in KJM_HTML_Utility.createTableFromList(rowList):