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
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}
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)
@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)
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)
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: