creating template from submitted jobs
[qcg-portal.git] / qcg / models.py
index 580944c..316f56e 100644 (file)
@@ -4,7 +4,7 @@ from django.core.urlresolvers import reverse
 from django.db import models
 from django.utils.timezone import now
 from pyqcg.service import Job as QcgJob, Task as QcgTask
-from pyqcg.utils import JobStatus, TaskStatus, TaskType, AllocationType, EPRUtils
+from pyqcg.utils import JobStatus, TaskStatus, TaskType, AllocationType, EPRUtils, DescriptionType
 
 from qcg.utils import username_from_dn, get_attributes
 
@@ -20,6 +20,10 @@ class User(AbstractUser):
         return Task.objects.filter(job__owner=self)
 
 
+DESC_TYPE_CHOICES = list(enumerate(field for field in dir(DescriptionType) if not field.startswith('__')))
+DESC_TYPE_CHOICES_REVERSED = {v: k for k, v in DESC_TYPE_CHOICES}
+
+
 class Job(models.Model):
     STATUS_CHOICES = list(enumerate(field for field in dir(JobStatus) if not field.startswith('__')))
     STATUS_CHOICES_REVERSED = {v: k for k, v in STATUS_CHOICES}
@@ -31,6 +35,8 @@ class Job(models.Model):
     status = models.IntegerField(u"Status", choices=STATUS_CHOICES)
     note = models.TextField(u"Notatka", blank=True, default='')
     description = models.TextField(u"Opis", blank=True, default='')
+    description_type = models.IntegerField(u"Typ opisu", choices=DESC_TYPE_CHOICES, blank=True, null=True)
+    qcg_description = models.TextField(u"Opis QCG", blank=True, default='')
     project = models.TextField(u"Projekt", blank=True, default='')
     submission_time = models.DateTimeField(u"Data wysłania")
     finish_time = models.DateTimeField(u"Data zakończenia", blank=True, null=True)
@@ -61,11 +67,12 @@ class Job(models.Model):
 
     @staticmethod
     def qcg_map(qcg_job, user=None):
-        attrs = get_attributes(qcg_job, ('job_id', 'note', 'description', 'submission_time', 'finish_time',
-                                         'project', 'purged'))
+        attrs = get_attributes(qcg_job, ('job_id', 'note', 'description', 'qcg_description', 'submission_time',
+                                         'finish_time', 'project', 'purged'))
 
         attrs['epr'] = EPRUtils.serialize_epr(qcg_job.epr)
         attrs['status'] = Job.STATUS_CHOICES_REVERSED[qcg_job.status]
+        attrs['description_type'] = DESC_TYPE_CHOICES_REVERSED[qcg_job.description_type]
         attrs['proxy_lifetime'] = now() + qcg_job.proxy_lifetime
 
         username = username_from_dn(qcg_job.user_dn)
@@ -100,6 +107,7 @@ class Task(models.Model):
     type = models.IntegerField(u"Typ", choices=TYPE_CHOICES)
     note = models.TextField(u"Notatka", blank=True, default='')
     description = models.TextField(u"Opis", blank=True, default='')
+    description_type = models.IntegerField(u"Typ opisu", choices=DESC_TYPE_CHOICES, blank=True, null=True)
     submission_time = models.DateTimeField(u"Data wysłania")
     start_time = models.DateTimeField(u"Data rozpoczęcia", blank=True, null=True)
     finish_time = models.DateTimeField(u"Data zakończenia", blank=True, null=True)
@@ -138,6 +146,7 @@ class Task(models.Model):
         attrs['epr'] = EPRUtils.serialize_epr(qcg_task.epr)
         attrs['status'] = Task.STATUS_CHOICES_REVERSED[qcg_task.status]
         attrs['type'] = Task.TYPE_CHOICES_REVERSED[qcg_task.type]
+        attrs['description_type'] = DESC_TYPE_CHOICES_REVERSED[qcg_task.description_type]
         attrs['proxy_lifetime'] = now() + qcg_task.proxy_lifetime
 
         if job is not None: