X-Git-Url: http://woldlab.caltech.edu/gitweb/?a=blobdiff_plain;f=gaworkflow%2Ffrontend%2Fanalys_track%2Fmain.py;fp=gaworkflow%2Ffrontend%2Fanalys_track%2Fmain.py;h=802ade164691d46efa5d8a608e7d6ccc6634477b;hb=5878e506af7604ea243c07962ebe8f2d5b0e1dec;hp=0000000000000000000000000000000000000000;hpb=681d6deea7bafd370b945e5bc3d9f7fb35bf4dea;p=htsworkflow.git diff --git a/gaworkflow/frontend/analys_track/main.py b/gaworkflow/frontend/analys_track/main.py new file mode 100644 index 0000000..802ade1 --- /dev/null +++ b/gaworkflow/frontend/analys_track/main.py @@ -0,0 +1,91 @@ +# some core functions of analysis manager module +from django.http import HttpResponse +from datetime import datetime +from string import * +import re +from gaworkflow.frontend import settings +from gaworkflow.frontend.analys_track.models import Task, Project +from django.core.exceptions import ObjectDoesNotExist + +def updStatus(request): + ClIP = request.META['REMOTE_ADDR'] + #Check client access permission + granted = False + if (settings.ALLOWED_ANALYS_IPS.has_key(ClIP)): granted = True + if not granted: return HttpResponse("access denied.") + + output='' + taskid=-1; + # Check required param + if request.has_key('taskid'): taskid = request['taskid'] + else: return HttpResponse('missing param task id') + + try: + rec = Task.objects.get(id=taskid) + mytimestamp = datetime.now().__str__() + mytimestamp = re.sub(pattern=":[^:]*$",repl="",string=mytimestamp) + if request.has_key('msg'): + rec.task_status += ", "+request['msg']+" ("+mytimestamp+")" + else : + rec.task_status = "Registered ("+mytimestamp+")" + rec.save() + output = "Hello "+settings.ALLOWED_ANALYS_IPS[ClIP]+". Updated status for task "+taskid + except ObjectDoesNotExist: + output = "entry not found: taskid="+taskid + + return HttpResponse(output) + + +def getProjects(request): + ClIP = request.META['REMOTE_ADDR'] + #Check client access permission + granted = False + if (settings.ALLOWED_ANALYS_IPS.has_key(ClIP)): granted = True + if not granted: return HttpResponse("access denied.") + + outputfile = '' + + All=False + if (request.has_key('mode')): + if request['mode']=='all': + All=True + + try: + if(All): + rec = Project.objects.all().distinct() + else: + rec = Project.objects.filter(tasks__task_status__exact='defined').distinct() + + outputfile = '' + outputfile += '\n' + for p in rec: + outputfile += '\n' + outputfile += '\n' + prj_tasks = p.tasks.all() + for t in prj_tasks: + outputfile += '\n' + if (t.apply_calc == 'QuEST' or t.apply_calc == 'WingPeaks' or t.apply_calc == 'MACS'): + outputfile += '\n' + outputfile += '\n' + outputfile += '\n' + outputfile += '\n' + + if (t.apply_calc == 'ProfileReads' or t.apply_calc == 'qPCR'): + outputfile += '\n<'+t.apply_calc+' TaskId="'+t.id.__str__()+'" Name="'+t.task_name+'" Genome="'+t.subject1.library_species.use_genome_build+'" Library="'+t.subject1.library_id+'"/>' + + if (t.apply_calc == 'CompareLibs'): + outputfile += '\n' + outputfile += '\n' + outputfile += '\n' + outputfile += '\n' + + #if (t.apply_calc == 'ComparePeakCalls'): + # + # outputfile += '\n' + # TO DO: Define these new fields in Task: PCaller1 (QuEST,WingPeaks), PCaller2, Set1(FK to self), Set2 (FK..) ALL NULL=TRUE + outputfile += '\n' + outputfile += '\n' + except ObjectDoesNotExist: + outputfile = "" + + return HttpResponse(outputfile)