You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.1 KiB

#!/usr/bin/python2
import os, cgi, cgitb, time, urllib
import db, unique_cookie
## setting script globals
form = cgi.FieldStorage()
if 'label' in form.keys():
comment = form['label'].value
else:
comment = ''
dict_url = {}
for key in form.keys():
dict_url[key] = form[key].value
tm = time.asctime()
uid = unique_cookie.unique_id('tko_history')
HTTP_REFERER = os.environ.get('HTTP_REFERER')
if HTTP_REFERER is None:
## fall back strategy for proxy connection
## substitute relative url
HTTP_REFERER = 'compose_query.cgi?' + urllib.urlencode(dict_url)
class QueryHistoryError(Exception):
pass
def log_query():
db_obj = db.db()
data_to_insert = {'uid':uid, 'time_created':tm,
'user_comment':comment, 'url':HTTP_REFERER }
try:
db_obj.insert('tko_query_history', data_to_insert)
except:
raise QueryHistoryError("Could not save query")
def delete_query(time_stamp):
## query is marked for delete by time stamp
db_obj = db.db()
data_to_delete = {'time_created':time_stamp}
try:
db_obj.delete('tko_query_history', data_to_delete)
except Exception:
raise QueryHistoryError("Could not delete query")
def body():
if not 'delete' in dict_url.keys():
log_query()
print '<b>%s</b><br><br>' % "Your query has been saved"
print 'time: %s<br>' % tm
print 'comments: %s<br><br>' % comment
else:
## key 'delete' has arg value of time_stamp
## which identifies the query to be deleted
time_stamp = dict_url['delete']
delete_query(time_stamp)
print '<b>%s</b><br><br>' % "Your query has been deleted"
print '<a href="query_history.cgi">View saved queries</a>&nbsp;&nbsp;'
print '<br><br>'
if not 'delete' in dict_url.keys():
print '<a href="%s">Back to Autotest</a><br>' % HTTP_REFERER
else:
print '<a href="compose_query.cgi">Autotest Results</a><br>'
def main():
print "Content-type: text/html\n"
print '<html><head><title>'
print '</title></head>'
print '<body>'
body()
print '</body>'
print '</html>'
main()