Location models
- region - site - municipal location - study location - storage location
This commit is contained in:
parent
31a9f87848
commit
3ee15528e8
8 changed files with 245 additions and 78 deletions
0
ccdb/locations/__init__.py
Normal file
0
ccdb/locations/__init__.py
Normal file
11
ccdb/locations/admin.py
Normal file
11
ccdb/locations/admin.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from .models import Region, Site, MunicipalLocation, \
|
||||
StudyLocation, StorageLocation
|
||||
|
||||
|
||||
admin.site.register(Region)
|
||||
admin.site.register(Site)
|
||||
admin.site.register(MunicipalLocation)
|
||||
admin.site.register(StudyLocation)
|
||||
admin.site.register(StorageLocation)
|
105
ccdb/locations/migrations/0001_initial.py
Normal file
105
ccdb/locations/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,105 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import autoslug.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='MunicipalLocation',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('code', models.CharField(max_length=10, blank=True)),
|
||||
('municipal_location_type', models.CharField(max_length=50, blank=True)),
|
||||
('description', models.CharField(max_length=255, blank=True)),
|
||||
('sort_order', models.IntegerField(null=True, blank=True)),
|
||||
('slug', autoslug.fields.AutoSlugField(populate_from='name', editable=False)),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Region',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('code', models.CharField(max_length=10, blank=True)),
|
||||
('sort_order', models.IntegerField(null=True, blank=True)),
|
||||
('slug', autoslug.fields.AutoSlugField(populate_from='name', editable=False)),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Site',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('code', models.CharField(max_length=10, blank=True)),
|
||||
('description', models.CharField(max_length=255, blank=True)),
|
||||
('sort_order', models.IntegerField(null=True, blank=True)),
|
||||
('slug', autoslug.fields.AutoSlugField(populate_from='name', editable=False)),
|
||||
('region', models.ForeignKey(to='locations.Region', null=True, blank=True)),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='StorageLocation',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('facility', models.CharField(max_length=100)),
|
||||
('building', models.CharField(max_length=100)),
|
||||
('room', models.CharField(max_length=50, blank=True)),
|
||||
('freezer', models.CharField(max_length=50, blank=True)),
|
||||
('temp_c', models.IntegerField(null=True, blank=True)),
|
||||
('description', models.CharField(max_length=255, blank=True)),
|
||||
('sort_order', models.IntegerField(null=True, blank=True)),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='StudyLocation',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('code', models.CharField(max_length=10, blank=True)),
|
||||
('study_location_type', models.CharField(max_length=50, blank=True)),
|
||||
('treatment_type', models.CharField(max_length=100, blank=True)),
|
||||
('collecting_location', models.BooleanField(default=False)),
|
||||
('description', models.CharField(max_length=255, blank=True)),
|
||||
('sort_order', models.IntegerField(null=True, blank=True)),
|
||||
('slug', autoslug.fields.AutoSlugField(populate_from='name', editable=False)),
|
||||
('municipal_location', models.ForeignKey(to='locations.MunicipalLocation', null=True, blank=True)),
|
||||
('site', models.ForeignKey(to='locations.Site', null=True, blank=True)),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='region',
|
||||
unique_together=set([('name', 'code')]),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='municipallocation',
|
||||
name='site',
|
||||
field=models.ForeignKey(to='locations.Site'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='studylocation',
|
||||
unique_together=set([('site', 'name')]),
|
||||
),
|
||||
]
|
0
ccdb/locations/migrations/__init__.py
Normal file
0
ccdb/locations/migrations/__init__.py
Normal file
94
ccdb/locations/models.py
Normal file
94
ccdb/locations/models.py
Normal file
|
@ -0,0 +1,94 @@
|
|||
from django.db import models
|
||||
|
||||
from autoslug import AutoSlugField
|
||||
|
||||
|
||||
class Region(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
code = models.CharField(max_length=10, blank=True)
|
||||
sort_order = models.IntegerField(blank=True, null=True)
|
||||
slug = AutoSlugField(populate_from='name')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
unique_together = ('name', 'code')
|
||||
ordering = ['sort_order']
|
||||
|
||||
|
||||
class Site(models.Model):
|
||||
region = models.ForeignKey(Region, blank=True, null=True)
|
||||
name = models.CharField(max_length=100)
|
||||
code = models.CharField(max_length=10, blank=True)
|
||||
description = models.CharField(max_length=255, blank=True)
|
||||
sort_order = models.IntegerField(blank=True, null=True)
|
||||
slug = AutoSlugField(populate_from='name')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
ordering = ['sort_order']
|
||||
|
||||
|
||||
class MunicipalLocation(models.Model):
|
||||
site = models.ForeignKey(Site)
|
||||
name = models.CharField(max_length=100)
|
||||
code = models.CharField(max_length=10, blank=True)
|
||||
municipal_location_type = models.CharField(max_length=50, blank=True)
|
||||
description = models.CharField(max_length=255, blank=True)
|
||||
sort_order = models.IntegerField(blank=True, null=True)
|
||||
slug = AutoSlugField(populate_from='name')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
ordering = ['sort_order']
|
||||
|
||||
|
||||
class StudyLocation(models.Model):
|
||||
site = models.ForeignKey(Site, blank=True, null=True)
|
||||
name = models.CharField(max_length=100)
|
||||
code = models.CharField(max_length=10, blank=True)
|
||||
study_location_type = models.CharField(max_length=50, blank=True)
|
||||
treatment_type = models.CharField(max_length=100, blank=True)
|
||||
municipal_location = models.ForeignKey(MunicipalLocation,
|
||||
blank=True, null=True)
|
||||
collecting_location = models.BooleanField(default=False)
|
||||
description = models.CharField(max_length=255, blank=True)
|
||||
sort_order = models.IntegerField(blank=True, null=True)
|
||||
slug = AutoSlugField(populate_from='name')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
unique_together = ('site', 'name')
|
||||
ordering = ['sort_order']
|
||||
|
||||
|
||||
class StorageLocation(models.Model):
|
||||
facility = models.CharField(max_length=100)
|
||||
building = models.CharField(max_length=100)
|
||||
room = models.CharField(max_length=50, blank=True)
|
||||
freezer = models.CharField(max_length=50, blank=True)
|
||||
temp_c = models.IntegerField(blank=True, null=True)
|
||||
description = models.CharField(max_length=255, blank=True)
|
||||
sort_order = models.IntegerField(blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
bldg = "".join(e[0].upper() for e in self.building.split())
|
||||
temp_c = '20'
|
||||
if self.temp_c:
|
||||
temp_c = self.temp_c
|
||||
|
||||
freezer = 'No Freezer'
|
||||
if self.freezer:
|
||||
freezer = self.freezer
|
||||
|
||||
return " ".join([bldg, str(temp_c)+'C', str(freezer)])
|
||||
|
||||
class Meta:
|
||||
ordering = ['sort_order']
|
Loading…
Add table
Add a link
Reference in a new issue