Processing

This commit is contained in:
Matthew Ryan Dillon 2016-02-01 11:21:11 -07:00
parent 94d7143cd2
commit 60601beacb
8 changed files with 207 additions and 86 deletions

View file

32
ccdb/processing/admin.py Normal file
View file

@ -0,0 +1,32 @@
from django.contrib import admin
from .models import ProcessType, Reagent, Flaw
class ProcessTypeAdmin(admin.ModelAdmin):
list_display = ('name', 'code', 'description', 'sort_order')
list_display_links = ('name',)
search_fields = ('name', 'code', 'description')
list_per_page = 25
fields = ('name', 'code', 'description', 'sort_order')
class ReagentAdmin(admin.ModelAdmin):
list_display = ('name', 'code', 'reagent_class', 'sort_order')
list_display_links = ('name',)
search_fields = ('name', 'code', 'reagent_class')
list_per_page = 25
fields = ('name', 'code', 'reagent_class', 'sort_order')
class FlawAdmin(admin.ModelAdmin):
list_display = ('name', 'description', 'sort_order')
list_display_links = ('name',)
search_fields = ('name', 'description')
list_per_page = 25
fields = ('name', 'description')
admin.site.register(ProcessType, ProcessTypeAdmin)
admin.site.register(Reagent, ReagentAdmin)
admin.site.register(Flaw, FlawAdmin)

View file

@ -0,0 +1,92 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
import autoslug.fields
class Migration(migrations.Migration):
dependencies = [
('misc', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Flaw',
fields=[
('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)),
('name', models.CharField(max_length=200)),
('description', models.CharField(blank=True, max_length=255)),
('sort_order', models.IntegerField(blank=True, null=True)),
('slug', autoslug.fields.AutoSlugField(populate_from='name', editable=False)),
],
options={
'ordering': ['sort_order'],
},
),
migrations.CreateModel(
name='Processing',
fields=[
('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)),
('container_label', models.CharField(max_length=50)),
('process_date', models.DateField(blank=True, null=True)),
('process_time', models.TimeField(blank=True, null=True)),
('reagent_volume', models.FloatField(blank=True, null=True)),
('minutes_in_reagent', models.IntegerField(blank=True, null=True)),
('container', models.ForeignKey(to='misc.Container')),
('flaw', models.ForeignKey(to='processing.Flaw', blank=True, null=True)),
('measurement_unit', models.ForeignKey(to='misc.MeasurementUnit', blank=True, null=True)),
],
),
migrations.CreateModel(
name='ProcessType',
fields=[
('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)),
('name', models.CharField(max_length=100)),
('code', models.CharField(blank=True, max_length=10)),
('description', models.CharField(blank=True, max_length=255)),
('sort_order', models.IntegerField(blank=True, null=True)),
('slug', autoslug.fields.AutoSlugField(populate_from='name', editable=False)),
],
options={
'ordering': ['sort_order'],
},
),
migrations.CreateModel(
name='Reagent',
fields=[
('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)),
('name', models.CharField(max_length=100)),
('code', models.CharField(blank=True, max_length=10)),
('reagent_class', models.CharField(blank=True, max_length=50)),
('sort_order', models.IntegerField(blank=True, null=True)),
('slug', autoslug.fields.AutoSlugField(populate_from='name', editable=False)),
],
options={
'ordering': ['sort_order'],
},
),
migrations.AlterUniqueTogether(
name='reagent',
unique_together=set([('name', 'code')]),
),
migrations.AlterUniqueTogether(
name='processtype',
unique_together=set([('name', 'code')]),
),
migrations.AddField(
model_name='processing',
name='process_type',
field=models.ForeignKey(to='processing.ProcessType'),
),
migrations.AddField(
model_name='processing',
name='reagent',
field=models.ForeignKey(to='processing.Reagent', blank=True, null=True),
),
migrations.AlterUniqueTogether(
name='processing',
unique_together=set([('process_type', 'container', 'container_label', 'process_date', 'process_time', 'reagent')]),
),
]

View file

66
ccdb/processing/models.py Normal file
View file

@ -0,0 +1,66 @@
from django.db import models
from autoslug import AutoSlugField
class ProcessType(models.Model):
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:
unique_together = ('name', 'code')
ordering = ['sort_order']
class Reagent(models.Model):
name = models.CharField(max_length=100)
code = models.CharField(max_length=10, blank=True)
reagent_class = models.CharField(max_length=50, 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 Flaw(models.Model):
name = models.CharField(max_length=200)
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 Processing(models.Model):
process_type = models.ForeignKey(ProcessType)
container = models.ForeignKey('misc.Container')
container_label = models.CharField(max_length=50)
process_date = models.DateField(blank=True, null=True)
process_time = models.TimeField(blank=True, null=True)
reagent = models.ForeignKey(Reagent, blank=True, null=True)
reagent_volume = models.FloatField(blank=True, null=True)
measurement_unit = models.ForeignKey('misc.MeasurementUnit', blank=True, null=True)
minutes_in_reagent = models.IntegerField(blank=True, null=True)
flaw = models.ForeignKey(Flaw, blank=True, null=True)
def __str__(self):
return "{process_date} {process_type} {container_label}".format(**self)
class Meta:
unique_together = ('process_type', 'container', 'container_label',
'process_date', 'process_time', 'reagent')

View file

@ -13,6 +13,7 @@ from ccdb.misc.models import MeasurementUnit, MeasurementType, Container, \
from ccdb.locations.models import Region, Site, MunicipalLocation, \
StudyLocation, StorageLocation
from ccdb.species.models import Species
from ccdb.processing.models import ProcessType, Reagent, Flaw, Processing
class Command(BaseCommand):
@ -24,7 +25,7 @@ class Command(BaseCommand):
def handle(self, **options):
_fetch_data(options['manifest_url'], self.stdout.write)
self.stdout.write('Fetched data')
_import_data()
_import_admin_data()
self.stdout.write('Imported data')
@ -44,7 +45,7 @@ def _fetch_data(url, write):
out_file.write(chunk)
def _import_data():
def _import_admin_data():
c = setup_sqlite()
if c:
# Projects
@ -126,7 +127,7 @@ def _import_data():
# Municipal Locations
for r in c.execute('SELECT * FROM tbl_lu_municipal_locations;'):
ml = MunicipalLocation(site_id=r[0], id=r[1], name=r[2], code=r[3],
ml = MunicipalLocation(id=r[1], name=r[2], code=r[3],
municipal_location_type=r[4], description=r[5], sort_order=r[6])
ml.save()
@ -158,3 +159,15 @@ def _import_data():
s = Species(id=r[0], common_name=r[1], genus=r[2], species=r[3],
parasite=r[4], sort_order=r[5])
s.save()
# Processing Type
for r in c.execute('SELECT * FROM tbl_lu_process_types;'):
pt = ProcessType(id=r[0], name=r[1], code=r[2], description=r[3],
sort_order=r[4])
pt.save()
# Reagent
for r in c.execute('SELECT * FROM tbl_lu_reagents;'):
r = Reagent(id=r[0], name=r[1], code=r[2], reagent_class=r[3],
sort_order=r[4])
r.save()