1 from django.db import models
2 from datetime import datetime
3 from gaworkflow.frontend.fctracker.models import Library
5 class Task(models.Model):
6 task_name = models.CharField(max_length=50,unique=True, db_index=True)
7 subject1 = models.ForeignKey(Library,related_name='sbj1_library',verbose_name="Subject")
8 subject2 = models.ForeignKey(Library,related_name='sbj2_library',verbose_name="Subject 2 / Control",blank=True,null=True)
10 ('QuEST', 'QuEST Peak Calling'),
11 ('WingPeaks', 'Wing Peak Calling'),
12 ('qPCR', 'In Silico qPCR'),
13 ('CompareLibs', 'Compare Libaraies'),
14 ('ComparePeakCalls','Compare Peak Calls'),
15 ('ProfileReads','Profile Reads')
17 apply_calc = models.CharField(max_length=50,choices=CALCS,verbose_name='Applied Calculation')
18 ## userid = # logged in user
19 task_status = models.CharField(max_length=500,blank=True,null=True,default='defined')
20 results_location = models.CharField(max_length=2000,blank=True,null=True)
21 submitted_on = models.DateTimeField(core=True,default=datetime.now())
22 run_note = models.CharField(max_length=500,blank=True,null=True)
25 return '"%s" - %s on [%s]/[%s]' % (self.task_name,self.apply_calc,self.subject1,self.subject2)
29 ps = self.project_set.all()
33 pstr += '%s, ' % (p.project_name)
37 list_display = ('task_name','apply_calc','subject1','subject2','InProjects','submitted_on','task_status')
38 list_filter = ('apply_calc',)
41 'fields': (('task_name'),('apply_calc'),('subject1'),('subject2'))
44 'classes': 'collapse',
45 'fields': (('submitted_on'),('task_status','run_note'))
50 class Project(models.Model):
51 project_name = models.CharField(max_length=50,unique=True, db_index=True)
52 tasks = models.ManyToManyField(Task,related_name='project_tasks',null=True)
53 project_notes = models.CharField(max_length=500,blank=True,null=True)
56 return '%s' % (self.project_name)
58 def ProjectTasks(self):
59 ptasks = self.tasks.all().order_by('id')
60 surl = 'data analysis server'
62 tstr += 'function togView(eid){'
63 tstr += 'f=document.getElementById(eid);'
64 tstr += 'if(f.height==0){'
65 tstr += 'f.height=400;'
66 tstr += 'f.style.border=\'solid #cccccc 3px\';'
69 tstr += 'f.style.border=\'none\';'
73 tstr += '<table><tr><th>Task</th><th>Job Status</th>'
75 tstr += '<tr><td width=250>%s</td><td>%s</td></tr>' % (t.task_name,t.task_status)
79 tstr += '<div align=center><a onClick="togView(\'RFrame'+self.id.__str__()+'\');" href="'+surl+self.id.__str__()+'/" title="View Results Page" target="RFrame'+self.id.__str__()+'">VIEW PROJECT RESULTS</a></div>'
80 tstr += '<iframe width="100%" height="0" frameborder="0" style="background-color:#ffffff" name="RFrame'+self.id.__str__()+'" id="RFrame'+self.id.__str__()+'"/></iframe></div>'
84 ProjectTasks.allow_tags = True
87 list_display = ('project_name','ProjectTasks')
88 # list_filter = ('...',)
91 'fields': (('project_name'),('tasks'),('project_notes'))}),