#!/usr/bin/env python

import sys, os
from PythonInsideHTML import PIH

#import cgitb; cgitb.enable(display=0, logdir='/tmp')

from cgitools import *
from tools import decodeStr

#namemap = {'slides':'intensity_file', 'gal.file.name':'gal_file', 'WithinArray.Nor':'norm_in_array',
#	'BetweenArra.Nor':'norm_bt_array', 'Output.Format':'output_format', 'BG.Sub':'bg_substraction',
#	'MA.File.Format':'intensity_format', 'Num.of.Dup':'replicates_in_array'} 
#namemap = dict(zip(namemap_limma_linear.values(), namemap_limma_linear.keys()))

req_id = os.getenv('PATH_INFO')
if req_id: req_id = decodeStr(req_id[1:])
if not req_id: exitWithInfo('No request need to load.')
try: req_id = int(req_id)
except: pass

## SAVE user_params to database
#import MySQLdb, cPickle
#from db_vars import *
#exec open('db').read()
#connection = MySQLdb.connect(host=host, db=db, port=port, user=user, passwd=passwd)
#cursor = connection.cursor()
#sql_statement = 'SELECT req_name, req_info, category FROM requests WHERE req_id="%s"' % req_id
#n = cursor.execute(sql_statement)
#if not n: 
#	cursor.close()
#	connection.close()
#	exitWithInfo('No request with ID ('+req_id+') in the database')
#req_name, req_info, req_type = cursor.fetchone()
#user_params = cPickle.loads(req_info)
#cursor.close()
#connection.close()

#sql_statement = 'SELECT req_name, req_info, category FROM requests WHERE req_id="%s"' % req_id
#sql_statement = 'SELECT requests.req_name, requests.req_info, requests.category FROM requests, users WHERE users.user_name="%s" and users.id=requests.user_id and requests.req_name="%s"' % (username, req_id)
#sql_statement = 'SELECT requests.req_name, requests.req_info, requests.category FROM requests WHERE requests.req_name="%s"' % req_id
if type(req_id) is str: sql_statement = 'SELECT requests.req_name, requests.req_info, requests.category, users.user_name FROM requests, users WHERE users.id=requests.user_id and requests.req_name="%s"' % req_id
else: sql_statement = 'SELECT requests.req_name, requests.req_info, requests.category, users.user_name FROM requests, users WHERE users.id=requests.user_id and requests.req_id=%d' % req_id

rlt = inquireDB(sql_statement, fetch=True)
if not rlt: exitWithInfo('No request with ID ('+req_id+') in the database')
req_name, req_info, req_type, req_user = rlt[0]
import cPickle
user_params = cPickle.loads(req_info)


#print cgi_token
if req_type in TYPE_ANALYSIS: #TYPE_WEBARRAY:  # only for WebArray
	pih_vars = {}
	my_values = {}
	if req_type in TYPE_WEBARRAY_ANALYSIS:
		namemap = dict(zip(namemap_limma_linear.values(), namemap_limma_linear.keys()))
		for k,v in user_params.items():
			kr = namemap.get(k, '') or k.replace('.', '_')
			my_values[kr] = v
			#print '<br>', k, ' --------- ', v
	else: my_values = user_params
	my_values['request_name'] = req_name
	my_values['req_user'] = req_user
	pih_vars['my_values'] = my_values
	pih_vars['req_user'] = req_user
else: 
	pih_vars = user_params
	pih_vars['req_user'] = req_user

#special parameters
#contrast = my_values.get('contrast', '')
#if type(contrast) is type([]): my_values['contrast'] = ', '.join(contrast)

pages = PAGES
dbs_pages = DBS_PAGES

if req_type == TYPE_DBS_FILL_SINGLE:
	page = dbs_pages.get(user_params['cur_db'], DBS_PAGE_DEFAULT) #dbs_pages[user_params['cur_db']]
elif pages.has_key(req_type):
	page = pages[req_type]
else:
	exitWithInfo('No such a page')

print cgi_token
#import traceback
#pc = PIH(page).pythonCode()
#open('tmpfile.py', 'w').write(pc)
try:
	#open('tmpfile.py', 'w').write(PIH(page).pythonCode())
	#execfile('tmpfile.py') #from tmpfile import *
	exec PIH(page).pythonCode()
	#for k,v in my_values.items(): print '<br>', k, '   :    ', v
except:
	#for k,v in my_values.items(): print '<br>', k, '   :    ', v
	#traceback.print_exc()
	raise

