#!/usr/bin/env python

import sys, os, cgi, re, time #, shelve #, tempfile
#import tools
from cgitools import *

r_id = os.getenv('QUERY_STRING')
#open('/tmp/sql_state.txt','w').write('r_id = "%s"; username="%s", online="%s"\n' % (r_id, username, isOnline() and "True" or "False"))
sql_statement = None
if r_id and isOnline(): 
	#open('/tmp/sql_state.txt','w').write(r_id+' '+username)
	# sometimes r_id has a tailed random number started with '?', remove it
	if r_id.rfind('?') > 0: r_id = re.sub(r'\?\d+$', '', r_id)
	# get sql_str
	if r_id.rfind('?') > 0: 
		m = re.match(r'(\d+)\?(.*)', r_id)
		if m: 
			r_id, sql_statement = m.groups()[0], m.groups()[1]
			sql_statement = decodeStr(sql_statement)
		else: r_id = None
	# to check if the r_id is belong to the user
	if r_id: 
		r_id = inquireDB('SELECT r.req_id FROM requests r, users u WHERE u.user_name="%s" && u.id=r.user_id && r.req_id=%s' % (username, r_id), fetch=True)
		if r_id: 
			#open('/tmp/sql_state.txt','a').write(repr(r_id[0][0]))
			tellDaemon('Stop jobs %d' % r_id[0][0])
			time.sleep(5)		

sql_statement = 'SELECT r.req_time, r.solve_time, r.req_id, r.req_name, r.req_state FROM users u, requests r WHERE u.user_name="%s" and r.user_id=u.id and r.availability=%d' % (username, AVAIL_YES)
state_str = map(lambda a:(a[2],a[4]), inquireDB(sql_statement, fetch=True))
state_str.sort()
state_str = str(hash(tuple(state_str)))

print "Content-type:text/xml\n\n"
print '<data>%s</data>' % state_str

