#!/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")