attributes tweaks
[qcg-portal.git] / qcg / models.py
index 6c25e3b..8c2be2d 100644 (file)
@@ -5,7 +5,6 @@ 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
 from django.utils.timezone import now
 from pyqcg.service import Job as QcgJob, Task as QcgTask
 from pyqcg.utils import JobStatus, TaskStatus, TaskType
-from timedelta import TimedeltaField
 
 from qcg.utils import username_from_dn, get_attributes
 
 
 from qcg.utils import username_from_dn, get_attributes
 
@@ -35,7 +34,7 @@ class Job(models.Model):
     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)
     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)
+    proxy_lifetime = models.DateTimeField(u"Czas życia proxy", blank=True, null=True)
     purged = models.BooleanField(u"Usunięty katalog roboczy?", default=False)
 
     owner = models.ForeignKey(User, verbose_name=u"Właściciel", related_name='jobs')
     purged = models.BooleanField(u"Usunięty katalog roboczy?", default=False)
 
     owner = models.ForeignKey(User, verbose_name=u"Właściciel", related_name='jobs')
@@ -63,10 +62,11 @@ 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',
     @staticmethod
     def qcg_map(qcg_job, user=None):
         attrs = get_attributes(qcg_job, ('job_id', 'note', 'description', 'submission_time', 'finish_time',
-                                         'proxy_lifetime', 'project', 'purged'))
+                                         'project', 'purged'))
 
         attrs['epr'] = str(qcg_job.epr)
         attrs['status'] = Job.STATUS_CHOICES_REVERSED[qcg_job.status]
 
         attrs['epr'] = str(qcg_job.epr)
         attrs['status'] = Job.STATUS_CHOICES_REVERSED[qcg_job.status]
+        attrs['proxy_lifetime'] = now() + qcg_job.proxy_lifetime
 
         username = username_from_dn(qcg_job.user_dn)
         if user is not None:
 
         username = username_from_dn(qcg_job.user_dn)
         if user is not None:
@@ -108,7 +108,7 @@ class Task(models.Model):
     finish_time = models.DateTimeField(u"Data zakończenia", blank=True, null=True)
     reserved_time_start = models.DateTimeField(u"Data rozpoczęcia rezerwacji", blank=True, null=True)
     reserved_time_finish = models.DateTimeField(u"Data zakończenia rezerwacji", blank=True, null=True)
     finish_time = models.DateTimeField(u"Data zakończenia", blank=True, null=True)
     reserved_time_start = models.DateTimeField(u"Data rozpoczęcia rezerwacji", blank=True, null=True)
     reserved_time_finish = models.DateTimeField(u"Data zakończenia rezerwacji", blank=True, null=True)
-    proxy_lifetime = TimedeltaField(u"Czas życia proxy", blank=True, null=True)
+    proxy_lifetime = models.DateTimeField(u"Czas życia proxy", blank=True, null=True)
     purged = models.BooleanField(u"Usunięty katalog roboczy?", default=False)
 
     created = models.DateTimeField(u"Utworzono", auto_now_add=True)
     purged = models.BooleanField(u"Usunięty katalog roboczy?", default=False)
 
     created = models.DateTimeField(u"Utworzono", auto_now_add=True)
@@ -136,12 +136,12 @@ class Task(models.Model):
     @staticmethod
     def qcg_map(qcg_task, jobs=None):
         attrs = get_attributes(qcg_task, ('task_id', 'status_description', 'note', 'description', 'submission_time',
     @staticmethod
     def qcg_map(qcg_task, jobs=None):
         attrs = get_attributes(qcg_task, ('task_id', 'status_description', 'note', 'description', 'submission_time',
-                                          'start_time', 'finish_time', 'reserved_time_slot', 'proxy_lifetime',
-                                          'purged'))
+                                          'start_time', 'finish_time', 'reserved_time_slot', 'purged'))
 
         attrs['epr'] = str(qcg_task.epr)
         attrs['status'] = Task.STATUS_CHOICES_REVERSED[qcg_task.status]
         attrs['type'] = Task.TYPE_CHOICES_REVERSED[qcg_task.type]
 
         attrs['epr'] = str(qcg_task.epr)
         attrs['status'] = Task.STATUS_CHOICES_REVERSED[qcg_task.status]
         attrs['type'] = Task.TYPE_CHOICES_REVERSED[qcg_task.type]
+        attrs['proxy_lifetime'] = now() + qcg_task.proxy_lifetime
 
         if jobs is not None and qcg_task.job_id in jobs:
             attrs['job'] = jobs[qcg_task.job_id]
 
         if jobs is not None and qcg_task.job_id in jobs:
             attrs['job'] = jobs[qcg_task.job_id]
@@ -168,8 +168,8 @@ class Task(models.Model):
             self.reserved_time_start, self.reserved_time_finish = value
 
     @property
             self.reserved_time_start, self.reserved_time_finish = value
 
     @property
-    def hosts(self):
-        return {alloc.host_name for alloc in self.allocations.all()}
+    def short_host_names(self):
+        return {alloc.host_name.split('.')[0] for alloc in self.allocations.all()}
 
 
 class Allocation(models.Model):
 
 
 class Allocation(models.Model):
@@ -177,8 +177,8 @@ class Allocation(models.Model):
 
     host_name = models.CharField(u"Host", max_length=100)
     status_description = models.TextField(u"Opis statusu", blank=True, default='')
 
     host_name = models.CharField(u"Host", max_length=100)
     status_description = models.TextField(u"Opis statusu", blank=True, default='')
-    processes_count = models.PositiveIntegerField(u"Liczba procesorów")
-    slots_count = models.PositiveIntegerField(u"Liczba slotów")
+    processes_count = models.PositiveIntegerField(u"Liczba procesów")
+    slots_count = models.PositiveIntegerField(u"Liczba rdzeni")
     processes_group_id = models.TextField(u"Identyfikator grupy procesów", blank=True, default='')
     submission_time = models.DateTimeField(u"Data wysłania")
     estimated_start_time = models.DateTimeField(u"Przewidywana data rozpoczęcia", blank=True, null=True)
     processes_group_id = models.TextField(u"Identyfikator grupy procesów", blank=True, default='')
     submission_time = models.DateTimeField(u"Data wysłania")
     estimated_start_time = models.DateTimeField(u"Przewidywana data rozpoczęcia", blank=True, null=True)
@@ -211,7 +211,7 @@ class NodeInfo(models.Model):
     allocation = models.ForeignKey(Allocation, verbose_name=u"Alokacja", related_name='nodes')
 
     name = models.CharField(u"Nazwa", max_length=32)
     allocation = models.ForeignKey(Allocation, verbose_name=u"Alokacja", related_name='nodes')
 
     name = models.CharField(u"Nazwa", max_length=32)
-    count = models.PositiveSmallIntegerField(u"Liczba slotów", blank=True, null=True)
+    count = models.PositiveSmallIntegerField(u"Liczba rdzeni", blank=True, null=True)
 
     class Meta:
         verbose_name = u"Węzeł"
 
     class Meta:
         verbose_name = u"Węzeł"
@@ -227,6 +227,6 @@ class NodeInfo(models.Model):
 
     @staticmethod
     def qcg_map(qcg_node):
 
     @staticmethod
     def qcg_map(qcg_node):
-        return {'name': qcg_node.value,
+        return {'name': qcg_node.name,
                 # FIXME
                 'count': qcg_node.slots_count.intValue() if qcg_node.slots_count is not None else None}
                 # FIXME
                 'count': qcg_node.slots_count.intValue() if qcg_node.slots_count is not None else None}