Sample ID now generated partially base on primary key of sample.
[htsworkflow.git] / samplebc / samples / models.py
index 86ed323a2a6387d35657577186569cf60afd8f90..7670f491048d2bd915370f7014f4cb8b1becf9a6 100644 (file)
@@ -2,6 +2,9 @@ from django.db import models
 from django.db.models import signals
 from django.contrib.auth.models import User, Group
 
+from samplebc import settings
+
+
 #AUDIT_TYPES = [('Create', 'Create'),
 #               ('Update', 'Update'),
 #               ('Delete', 'Delete')]
@@ -49,7 +52,7 @@ class SampleType(models.Model):
 
 
 class Container(models.Model):
-    name = models.CharField(max_length=256)
+    name = models.CharField(max_length=256, unique=True)
     sample_type = models.ManyToManyField(SampleType)
     max_items = models.IntegerField()
     freezer = models.ForeignKey(Freezer)
@@ -73,7 +76,8 @@ class Container(models.Model):
 
 
 class Sample(models.Model):
-    name = models.CharField(max_length=256)
+    name = models.CharField(max_length=256, unique=True)
+    #sampleid = models.CharField(max_length=64, unique=True)
     sampleid = models.CharField(max_length=64, unique=True)
     sample_type = models.ForeignKey(SampleType)
     owner = models.ForeignKey(Owner)
@@ -92,3 +96,12 @@ class Sample(models.Model):
     def get_absolute_url(self):
         return ('samplebc.samples.views.sample_summary', [str(self.sampleid)])
 
+def assign_sample_id(sender, instance, **kwargs):
+
+    print 'Instance ID: %s' % (instance.id)    
+    if instance.sampleid is None or len(instance.sampleid) == 0:
+        instance.sampleid = settings.HTSW_SAMPLE_ID_TEMPLATE % (instance.id)
+        instance.save()
+        
+signals.post_save.connect(assign_sample_id, sender=Sample)
+