#!/usr/local/bin/python3.3 import cgi import cgitb import pymysql from subprocess import call import datetime import json from functions import get_cookies, phead, ptail cgitb.enable() """ The following issues need to be addressed: -function does not work """ cookie = get_cookies() if cookie: print(cookie) fname = cookie["fname"].value lname = cookie["lname"].value name = " ".join((fname, lname)) admin = cookie["admin"].value uid = cookie["uid"].value uname = cookie["uname"].value form = cgi.FieldStorage() cb = form.getvalue("checkboxes") eid = form.getvalue("eid") #bid = form.getvalue("bid") print("Content-type: text/html\n") if cb != None: j = json.loads(cb) data = [] #data should be in the order: user, passwd, host, db with open('./dbinfo.txt') as f: for line in f: line = line.strip('\n') data.append(line) info = [] for item in data: item = item.split(':') info.append(item) user=info[0][1] passwd=info[1][1] host=info[2][1] db=info[3][1] getcmid = """ select cmid from ComputationalMethod where name ="bedtools intersect"; """ getwmid = """ select wmid from WetlabMethod where name ="bedtools intersect"; """ # getbid = """ # select bid from UserBEDfile # where name = # """ def runQuery(query, user, passwd): connection = pymysql.connect(host=host, user=user, db=db, passwd=passwd) cursor = connection.cursor() cursor.execute(query) res = cursor.fetchall() cursor.close() connection.close() return res def insert_copy_bed(name, location, command, uname): connection = pymysql.connect(host=host, user=user, db=db, passwd=passwd) cursor = connection.cursor() query1 = """INSERT INTO BEDfile (name, location, upload_date, bedtoolcommand, uploader, cmid, wmid) VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s"); """%(name, location, str(datetime.datetime.now())[:-7], command, uname, runQuery(getcmid, user, passwd)[0][0], runQuery(getwmid, user, passwd)[0][0]) cursor.execute(query1) connection.commit() cursor.close() connection.close() def update_exp(bid,eid,uid): connection = pymysql.connect(host=host, user=user, db=db, passwd=passwd) cursor = connection.cursor() query2 = """INSERT INTO ExperimentBEDfile(eid,bid) VALUES (%s,%s);"""%(eid,bid) query5 = """ INSERT INTO UserBEDfile (uid, bid) VALUES (%s, %s)"""%(uid, bid) cursor.execute(query2) cursor.execute(query5) connection.commit() cursor.close() connection.close() def query_bedname(bid): connection = pymysql.connect(host=host, user=user, db=db, passwd=passwd) cursor = connection.cursor() query6 = """ select name from BEDfile where bid = "%s" """ % bid cursor.execute(query6) res = cursor.fetchall() connection.close() return res dire = "/var/www/dapr_test/bedfiles/" # q2 = """select wmid,cmid,name,location,description1,description2,description3,bedtoolcommand, stringency, source from BEDfile where bid = "%s";"""%bid # q3 = """select bid from BEDfile order by bid DESC limit 1;""" # q4 = """select eid from Experiment where title = "%s";"""%eid # add_new = runQuery(q2,user,passwd) # nbid = runQuery(q3,user,passwd) # neid = runQuery(q4,user,passwd) # name = add_new[0] + "_" + str(nbid) #Copy(nbid,name, add_new[0][3], add_new[0][4], add_new[0][5], add_new[0][6], add_new[0][7], nuname, add_new[0][1], add_new[0][0],add_new[0][8], add_new[0][9],neid) f1_bid = j[0] f1 = str(query_bedname(f1_bid)) eid = int(form.getvalue("eid")) if f1 and eid: q3 = """ select bid from BEDfile order by bid DESC limit 1; """ nbid = int(runQuery(q3, user, passwd)[0][0])+1 original = f1[3:-5] #+ ".bed" bedname = "Copy_of_"+f1[3:-9]+"_"+str(nbid) #+ ".bed" locpre = "dapr_test/bedfiles/" loc = locpre+bedname#+".bed" getbid = """ select bid from BEDfile where name = "%s" """ % bedname getename = """ select title from Experiment where eid = "%s" """ % eid command = "copyBED " + f1[3:-5] #+ ".bed" new_file = open('/var/www/dapr_test/bedfiles/' + bedname, "w+") with open('/var/www/dapr_test/bedfiles/' + original) as f: for line in f: new_file.write(line) new_file.close() #counting lines # original.seek(0) # if original: # # It's an uploaded file; count lines # linecount = 0 # while 1: # line = original.readline() # if not line: break # linecount = linecount + 1 insert_copy_bed(bedname, loc, command, uname) #bid = runQuery(getbid, user, passwd)[0][0] update_exp(nbid, eid, uid) # message = 'The file "' + f1 + '" was successfully copied' # location = '/dapr_test/bedfiles/' + fn_new # runQuery(nbid,fn_new , location, des1, des2, des3, command,uname, cmid, wmid,linecount) #runQuery2(nbid,eid, uid) # print("""""") else: print("Content-type: text/html\n") print(""" """ %eid) else: print("Location: login.py") print("Content-type: text/html\n")