Define the unicode() function for HTSUser to also report the users full name.
[htsworkflow.git] / htsworkflow / frontend / samples / models.py
index 749c82eee4cb9e99aceafb783fa6241cf942091e..cda52a308f994fe673dd65b73f4ad94b0bc8c1ea 100644 (file)
@@ -104,7 +104,7 @@ class Affiliation(models.Model):
   name = models.CharField(max_length=256, db_index=True, verbose_name='Name')
   contact = models.CharField(max_length=256, null=True, blank=True,verbose_name='Lab Name')  
   email = models.EmailField(null=True,blank=True)
-  users = models.ManyToManyField('HTSUser', null=True)
+  users = models.ManyToManyField('HTSUser', null=True, blank=True)
   users.admin_order_field = "username"
   
   def __unicode__(self):
@@ -128,12 +128,13 @@ class LibraryType(models.Model):
     return unicode(self.name)
 
 class Library(models.Model):
-  id = models.AutoField(primary_key=True)
-  library_id = models.CharField(max_length=30, db_index=True, unique=True)
+  id = models.CharField(max_length=10, primary_key=True)
   library_name = models.CharField(max_length=100, unique=True)
   library_species = models.ForeignKey(Species)
   # new field 2008 Mar 5, alter table samples_library add column "hidden" NOT NULL default 0;
   hidden = models.BooleanField()
+  # new field 2009 Oct 6, alter table samples_library add column "account_number" varchar(100) NULL
+  account_number = models.CharField(max_length=100, null=True, blank=True)
   cell_line = models.ForeignKey(Cellline, blank=True, null=True, verbose_name="Background")
   condition = models.ForeignKey(Condition, blank=True, null=True)
   antibody = models.ForeignKey(Antibody,blank=True,null=True)
@@ -176,12 +177,12 @@ class Library(models.Model):
   notes = models.TextField(blank=True)
   
   def __unicode__(self):
-    return u'#%s: %s' % (self.library_id, self.library_name)
+    return u'#%s: %s' % (self.id, self.library_name)
   
   class Meta:
     verbose_name_plural = "libraries"
     #ordering = ["-creation_date"] 
-    ordering = ["-library_id"]
+    ordering = ["-id"]
   
   def antibody_name(self):
     str ='<a target=_self href="/admin/samples/antibody/'+self.antibody.id.__str__()+'/" title="'+self.antibody.__str__()+'">'+self.antibody.nickname+'</a>' 
@@ -216,15 +217,15 @@ class Library(models.Model):
     return u'%s' % ( ", ".join(ar))
 
   def DataRun(self):
-    str ='<a target=_self href="/admin/experiments/datarun/?q='+self.library_id+'" title="Check All Data Runs for This Specific Library ..." ">Data Run</a>' 
+    str ='<a target=_self href="/admin/experiments/datarun/?q='+self.id+'" title="Check All Data Runs for This Specific Library ..." ">Data Run</a>' 
     return str
   DataRun.allow_tags = True
 
   def aligned_m_reads(self):
-    return getLibReads(self.library_id)
+    return getLibReads(self.id)
 
   def aligned_reads(self):
-    res = getLibReads(self.library_id)
+    res = getLibReads(self.id)
 
     # Check data sanity
     if res[2] != "OK":
@@ -261,7 +262,7 @@ class Library(models.Model):
 
   @models.permalink
   def get_absolute_url(self):
-    return ('htsworkflow.frontend.samples.views.library_to_flowcells', [str(self.library_id)])
+    return ('htsworkflow.frontend.samples.views.library_to_flowcells', [str(self.id)])
 
 class HTSUser(User):
     """
@@ -274,6 +275,9 @@ class HTSUser(User):
 
     def admin_url(self):
         return '/admin/%s/%s/%d' % (self._meta.app_label, self._meta.module_name, self.id)
+
+    def __unicode__(self):
+        return unicode(self.username) + u" (" + unicode(self.get_full_name()) + u")"
     
 def HTSUserInsertID(sender, instance, **kwargs):
     """