X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;ds=sidebyside;f=qcg%2Fmodels.py;fp=qcg%2Fmodels.py;h=6c25e3bb1b9e3f69ba77db57949fedece1c03388;hb=b9bcd422c66e0cd9b0f20a0c037dbc2d811bb59f;hp=b9a35e549f23f851f0c502b72814c060bb554aca;hpb=be46fb1b43775f35da8b49ad28110d16c8692777;p=qcg-portal.git diff --git a/qcg/models.py b/qcg/models.py index b9a35e5..6c25e3b 100644 --- a/qcg/models.py +++ b/qcg/models.py @@ -1,5 +1,6 @@ # coding=utf-8 from django.contrib.auth.models import AbstractUser +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 @@ -15,6 +16,10 @@ __all__ = ['User', 'Job', 'Task', 'Allocation', 'NodeInfo'] class User(AbstractUser): last_update = models.DateTimeField(default=now) + @property + def tasks(self): + return Task.objects.filter(job__owner=self) + class Job(models.Model): STATUS_CHOICES = list(enumerate(field for field in dir(JobStatus) if not field.startswith('__'))) @@ -27,10 +32,10 @@ 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='') + 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) proxy_lifetime = TimedeltaField(u"Czas życia proxy", blank=True, null=True) - project = models.TextField(u"Projekt", blank=True, default='') purged = models.BooleanField(u"Usunięty katalog roboczy?", default=False) owner = models.ForeignKey(User, verbose_name=u"Właściciel", related_name='jobs') @@ -45,6 +50,9 @@ class Job(models.Model): def __unicode__(self): return self.job_id + def get_absolute_url(self): + return reverse('job', kwargs={'job_id': self.job_id}) + @property def qcg_job(self): if self._job is None: @@ -115,6 +123,9 @@ class Task(models.Model): def __unicode__(self): return u'{}/{}'.format(self.job, self.task_id) + def get_absolute_url(self): + return reverse('task', kwargs={'job_id': self.job.job_id, 'task_id': self.task_id}) + @property def qcg_task(self): if self._qcg_task is None: