1 from django.db import models
2 from django.db.models import signals
3 from django.contrib.auth.models import User, Group
5 #AUDIT_TYPES = [('Create', 'Create'),
6 # ('Update', 'Update'),
7 # ('Delete', 'Delete')]
9 EXP_TYPES = [('RNASeq', 'RNASeq'),
10 ('ChIPSeq','ChIPSeq'),
11 ('DeNovoSeq','DeNovoSeq'),
12 ('MethylSeq','MethylSeq')]
14 FREEZER_BUILDINGS = [('Kerckhoff', 'Kerckhoff')]
18 class Owner(models.Model):
19 name = models.CharField(max_length=32)
21 def __unicode__(self):
22 return u'%s' % (self.name)
25 class Freezer(models.Model):
26 name = models.CharField(max_length=256)
27 building = models.CharField(max_length=256, choices=FREEZER_BUILDINGS,
28 default=FREEZER_BUILDINGS[0][0])
29 loc_desc = models.CharField(max_length=256, blank=True, null=True)
30 temperature = models.FloatField(help_text='Celsius')
32 notes = models.TextField(blank=True, null=True)
34 uuid = models.CharField(max_length=32, unique=True)
36 def __unicode__(self):
37 return u'%s (%s; %sC)' % (self.name, self.building, self.temperature)
40 def get_absolute_url(self):
41 return ('samplebc.samples.views.freezer_summary', [str(self.uuid)])
44 class SampleType(models.Model):
45 name = models.CharField(max_length=256)
47 def __unicode__(self):
48 return u'%s' % (self.name)
51 class Container(models.Model):
52 name = models.CharField(max_length=256)
53 sample_type = models.ManyToManyField(SampleType)
54 max_items = models.IntegerField()
55 freezer = models.ForeignKey(Freezer)
57 notes = models.TextField(blank=True, null=True)
59 uuid = models.CharField(max_length=32, unique=True)
61 def __unicode__(self):
62 return u'%s (spc: %s)' % (self.name, self.space_available())
65 def get_absolute_url(self):
66 return ('samplebc.samples.views.container_summary', [str(self.uuid)])
68 def space_available(self):
70 returns the space available for the container
72 return (self.max_items - self.sample_set.count())
75 class Sample(models.Model):
76 name = models.CharField(max_length=256)
77 sampleid = models.CharField(max_length=64, unique=True)
78 sample_type = models.ForeignKey(SampleType)
79 owner = models.ForeignKey(Owner)
81 description = models.TextField()
83 # Concentration in ng/ul
84 concentration = models.FloatField(help_text='ng/ul', blank=True, null=True)
85 volume = models.FloatField(help_text='ul', blank=True, null=True)
86 container = models.ForeignKey(Container, blank=True, null=True)
88 def __unicode__(self):
89 return u's|%s|%s' % (self.sampleid, self.owner.name)
92 def get_absolute_url(self):
93 return ('samplebc.samples.views.sample_summary', [str(self.sampleid)])