job template model
authorMaciej Tronowski <mtro@man.poznan.pl>
Wed, 29 Apr 2015 15:59:49 +0000 (17:59 +0200)
committerMaciej Tronowski <mtro@man.poznan.pl>
Wed, 29 Apr 2015 15:59:49 +0000 (17:59 +0200)
qcg/admin.py
qcg/migrations/0003_jobtemplate.py [new file with mode: 0644]
qcg/models.py

index cff7b4b..9a7fc5e 100644 (file)
@@ -24,8 +24,15 @@ class JobAdmin(admin.ModelAdmin):
     date_hierarchy = 'submission_time'
 
 
+class JobTemplateAdmin(admin.ModelAdmin):
+    list_display = ('name', 'owner', 'created', 'updated')
+    list_filter = ('owner',)
+    date_hierarchy = 'updated'
+
+
 admin.site.register(User, CustomUserAdmin)
 admin.site.register(Job, JobAdmin)
 admin.site.register(Task)
 admin.site.register(Allocation)
 admin.site.register(NodeInfo)
+admin.site.register(JobTemplate, JobTemplateAdmin)
diff --git a/qcg/migrations/0003_jobtemplate.py b/qcg/migrations/0003_jobtemplate.py
new file mode 100644 (file)
index 0000000..3de77ce
--- /dev/null
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('qcg', '0002_allocation_working_directory'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='JobTemplate',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('name', models.CharField(max_length=100, verbose_name='Nazwa')),
+                ('description', models.TextField(verbose_name='Opis')),
+                ('created', models.DateTimeField(auto_now_add=True, verbose_name='Utworzono')),
+                ('updated', models.DateTimeField(auto_now=True, verbose_name='Uaktualniono')),
+                ('owner', models.ForeignKey(related_name='templates', verbose_name='W\u0142a\u015bciciel', to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+                'verbose_name': 'Szablon zadania',
+                'verbose_name_plural': 'Szablony zadania',
+            },
+            bases=(models.Model,),
+        ),
+    ]
index fa5065b..608c59f 100644 (file)
@@ -9,7 +9,7 @@ from pyqcg.utils import JobStatus, TaskStatus, TaskType, AllocationType, EPRUtil
 from qcg.utils import username_from_dn, get_attributes
 
 
-__all__ = ['User', 'Job', 'Task', 'Allocation', 'NodeInfo']
+__all__ = ['User', 'Job', 'Task', 'Allocation', 'NodeInfo', 'JobTemplate']
 
 
 class User(AbstractUser):
@@ -234,3 +234,19 @@ class NodeInfo(models.Model):
     @staticmethod
     def qcg_map(qcg_node):
         return {'name': qcg_node.name, 'count': qcg_node.slots_count}
+
+
+class JobTemplate(models.Model):
+    name = models.CharField(u"Nazwa", max_length=100)
+    description = models.TextField(u"Opis")
+
+    owner = models.ForeignKey(User, verbose_name=u"Właściciel", related_name='templates')
+    created = models.DateTimeField(u"Utworzono", auto_now_add=True)
+    updated = models.DateTimeField(u"Uaktualniono", auto_now=True)
+
+    class Meta:
+        verbose_name = u"Szablon zadania"
+        verbose_name_plural = u"Szablony zadania"
+
+    def __unicode__(self):
+        return u"{} ({})".format(self.name, self.owner)