Replaced hard coded IP address (of permitted analysis clients to from end) with the...
authorUnknown Author <unknown>
Fri, 8 Aug 2008 23:30:15 +0000 (23:30 +0000)
committerUnknown Author <unknown>
Fri, 8 Aug 2008 23:30:15 +0000 (23:30 +0000)
gaworkflow/frontend/exp_track/main.py [new file with mode: 0644]

diff --git a/gaworkflow/frontend/exp_track/main.py b/gaworkflow/frontend/exp_track/main.py
new file mode 100644 (file)
index 0000000..bc79479
--- /dev/null
@@ -0,0 +1,92 @@
+# 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 "+ALLOWED_ANALYS_IPS[ClIP]+". Updated status for task "+taskid
+    except ObjectDoesNotExist:
+      output = "entry not found: 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 = '<?xml version="1.0" ?>'
+      outputfile += '\n<Projects Client="'+ALLOWED_ANALYS_IPS[ClIP]+'">'
+      for p in rec:
+        outputfile += '\n'
+        outputfile += '\n<Project ProjectId="'+p.project_id+'" Name="'+p.project_name+'">'
+        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<PeakCalling TaskId="'+t.id.__str__()+'" Name="'+t.task_name+'" Caller="'+t.apply_calc+'" Genome="'+t.subject1.library_species.use_genome_build+'">'
+            outputfile += '\n<Signal Library="'+t.subject1.library_id+'"/>'
+            outputfile += '\n<Background Library="'+t.subject2.library_id+'"/>'
+            outputfile += '\n</PeakCalling>'
+
+          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<CompareLibraries TaskId="'+t.id.__str__()+'" TF="'+t.task_name+'" Genome="'+t.subject1.library_species.use_genome_build+'">'
+            outputfile += '\n<Library Library="'+t.subject1.library_id+'"/>'
+            outputfile += '\n<Library Library="'+t.subject2.library_id+'"/>'
+            outputfile += '\n</CompareLibraries>'
+
+          #if (t.apply_calc == 'ComparePeakCalls'):
+          # <ComparePeakCalls Genome="hg18" Caller1="QuEST" Set1="A549 GR Dex ChIP" Caller2="QuEST" Set2="A549 GR EtOH ChIP" />
+          # outputfile += '\n<ComparePeakCalls TaskId='+t.id.__str__()+' Genome="'+t.subject1.library_species.use_genome_build+'" Caller1="'+t.pcaller1+'" Caller1="'+t.pcaller1+'" Caller2="'+t.pcaller2+'" Set1="'+t.set1+'" Set1="'+t.set2+'"/>'
+          # TO DO: Define these new fields in Task: PCaller1 (QuEST,WingPeaks), PCaller2, Set1(FK to self), Set2 (FK..) ALL NULL=TRUE  
+        
+        outputfile += '\n</Project>' 
+      outputfile += '\n</Projects>'
+    except ObjectDoesNotExist:
+      outputfile = "<?xml version='1.0' ?><Projects></Projects>"
+
+    return HttpResponse(outputfile)