def submitjob(ctx, seq="", fixtop="", jobname="", email=""):#{{{ seq = seq + "\n" #force add a new line for correct parsing the fasta file seqinfo = {} filtered_seq = webcom.ValidateSeq(seq, seqinfo, g_params) # ValidateFixtop(fixtop) #to be implemented jobid = "None" url = "None" numseq_str = "%d"%(seqinfo['numseq']) warninfo = seqinfo['warninfo'] errinfo = "" # print "\n\nreq\n", dir(ctx.transport.req) #debug # print "\n\n", ctx.transport.req.META['REMOTE_ADDR'] #debug # print "\n\n", ctx.transport.req.META['HTTP_HOST'] #debug if filtered_seq == "": errinfo = seqinfo['errinfo'] else: soap_req = ctx.transport.req try: client_ip = soap_req.META['REMOTE_ADDR'] except: client_ip = "" try: hostname = soap_req.META['HTTP_HOST'] except: hostname = "" # print client_ip # print hostname seqinfo['jobname'] = jobname seqinfo['email'] = email seqinfo['fixtop'] = fixtop seqinfo['date'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") seqinfo['client_ip'] = client_ip seqinfo['hostname'] = hostname seqinfo['method_submission'] = "wsdl" seqinfo['isForceRun'] = False # disable isForceRun if submitted by WSDL jobid = RunQuery_wsdl(seq, filtered_seq, seqinfo) if jobid == "": errinfo = "Failed to submit your job to the queue\n"+seqinfo['errinfo'] else: log_record = "%s\t%s\t%s\t%s\t%d\t%s\t%s\t%s\n"%(seqinfo['date'], jobid, seqinfo['client_ip'], seqinfo['numseq'], len(seq),seqinfo['jobname'], seqinfo['email'], seqinfo['method_submission']) main_logfile_query = "%s/%s/%s"%(SITE_ROOT, "static/log", "submitted_seq.log") myfunc.WriteFile(log_record, main_logfile_query, "a") divided_logfile_query = "%s/%s/%s"%(SITE_ROOT, "static/log/divided", "%s_submitted_seq.log"%(seqinfo['client_ip'])) if seqinfo['client_ip'] != "": myfunc.WriteFile(log_record, divided_logfile_query, "a") url = "http://" + hostname + g_params['BASEURL'] + "result/%s"%(jobid) file_seq_warning = "%s/%s/%s/%s"%(SITE_ROOT, "static/result", jobid, "query.warn.txt") if seqinfo['warninfo'] != "": myfunc.WriteFile(seqinfo['warninfo'], file_seq_warning, "a") errinfo = seqinfo['errinfo'] for s in [jobid, url, numseq_str, errinfo, warninfo]: yield s
def submitjob_remote(ctx, seq="", fixtop="", jobname="", email="",#{{{ numseq_this_user="", isforcerun=""): seq = seq + "\n" #force add a new line for correct parsing the fasta file seqinfo = {} filtered_seq = webcom.ValidateSeq(seq, seqinfo, g_params) # ValidateFixtop(fixtop) #to be implemented if numseq_this_user != "" and numseq_this_user.isdigit(): seqinfo['numseq_this_user'] = int(numseq_this_user) else: seqinfo['numseq_this_user'] = 1 numseq_str = "%d"%(seqinfo['numseq']) warninfo = seqinfo['warninfo'] # print "\n\nreq\n", dir(ctx.transport.req) #debug # print "\n\n", ctx.transport.req.META['REMOTE_ADDR'] #debug # print "\n\n", ctx.transport.req.META['HTTP_HOST'] #debug jobid = "None" url = "None" if filtered_seq == "": errinfo = seqinfo['errinfo'] else: soap_req = ctx.transport.req try: client_ip = soap_req.META['REMOTE_ADDR'] except: client_ip = "" try: hostname = soap_req.META['HTTP_HOST'] except: hostname = "" # print client_ip # print hostname seqinfo['jobname'] = jobname seqinfo['email'] = email seqinfo['fixtop'] = fixtop seqinfo['date'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") seqinfo['client_ip'] = client_ip seqinfo['hostname'] = hostname seqinfo['method_submission'] = "wsdl" # for this method, wsdl is called only by the daemon script, isForceRun can be # set by the argument if isforcerun.upper()[:1] == "T": seqinfo['isForceRun'] = True else: seqinfo['isForceRun'] = False jobid = RunQuery_wsdl_local(seq, filtered_seq, seqinfo) if jobid == "": errinfo = "Failed to submit your job to the queue\n"+seqinfo['errinfo'] else: log_record = "%s\t%s\t%s\t%s\t%d\t%s\t%s\t%s\n"%(seqinfo['date'], jobid, seqinfo['client_ip'], seqinfo['numseq'], len(seq),seqinfo['jobname'], seqinfo['email'], seqinfo['method_submission']) main_logfile_query = "%s/%s/%s"%(SITE_ROOT, "static/log", "submitted_seq.log") myfunc.WriteFile(log_record, main_logfile_query, "a") divided_logfile_query = "%s/%s/%s"%(SITE_ROOT, "static/log/divided", "%s_submitted_seq.log"%(seqinfo['client_ip'])) if seqinfo['client_ip'] != "": myfunc.WriteFile(log_record, divided_logfile_query, "a") url = "http://" + hostname + g_params['BASEURL'] + "result/%s"%(jobid) file_seq_warning = "%s/%s/%s/%s"%(SITE_ROOT, "static/result", jobid, "query.warn.txt") if seqinfo['warninfo'] != "": myfunc.WriteFile(seqinfo['warninfo'], file_seq_warning, "a") errinfo = seqinfo['errinfo'] for s in [jobid, url, numseq_str, errinfo, warninfo]: yield s