Finish up collections admin
This commit is contained in:
parent
60601beacb
commit
2c8681217b
7 changed files with 361 additions and 68 deletions
|
@ -0,0 +1 @@
|
|||
default_app_config = 'ccdb.collections_ccdb.apps.CollectionsAppConfig'
|
|
@ -1,3 +1,60 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
from .models import CollectionType, CollectionMethod, Flaw, ADFGPermit, \
|
||||
DatasheetAttachment, CollectionTrap
|
||||
|
||||
|
||||
class CollectionTypeAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'code', 'sort_order')
|
||||
list_display_links = ('name',)
|
||||
search_fields = ('name', 'code')
|
||||
list_per_page = 25
|
||||
fields = ('name', 'code', 'sort_order')
|
||||
|
||||
|
||||
class CollectionMethodAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'code', 'collection_method_class', 'sort_order')
|
||||
list_display_links = ('name',)
|
||||
search_fields = ('name', 'code', 'collection_method_class')
|
||||
list_per_page = 25
|
||||
fields = ('name', 'code', 'collection_method_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')
|
||||
|
||||
|
||||
class ADFGPermitAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'sort_order')
|
||||
list_display_links = ('name',)
|
||||
search_fields = ('name',)
|
||||
list_per_page = 25
|
||||
fields = ('name', 'sort_order')
|
||||
|
||||
|
||||
class DatasheetAttachmentAdmin(admin.ModelAdmin):
|
||||
list_display = ('collection', 'datasheet')
|
||||
list_display_links = ('datasheet',)
|
||||
list_per_page = 25
|
||||
fields = ('collection', 'datasheet')
|
||||
|
||||
|
||||
class CollectionTrapAdmin(admin.ModelAdmin):
|
||||
list_display = ('collection', 'number_of_traps', 'date_opened',
|
||||
'time_opened', 'date_closed', 'time_closed')
|
||||
list_display_links = ('number_of_traps',)
|
||||
list_per_page = 25
|
||||
fields = ('collection', 'number_of_traps', 'date_opened',
|
||||
'time_opened', 'date_closed', 'time_closed')
|
||||
|
||||
|
||||
admin.site.register(CollectionType, CollectionTypeAdmin)
|
||||
admin.site.register(CollectionMethod, CollectionMethodAdmin)
|
||||
admin.site.register(Flaw, FlawAdmin)
|
||||
admin.site.register(ADFGPermit, ADFGPermitAdmin)
|
||||
admin.site.register(DatasheetAttachment, DatasheetAttachmentAdmin)
|
||||
admin.site.register(CollectionTrap, CollectionTrapAdmin)
|
||||
|
|
7
ccdb/collections_ccdb/apps.py
Normal file
7
ccdb/collections_ccdb/apps.py
Normal file
|
@ -0,0 +1,7 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
# This is needed because 'collections' is part of the Python Std Lib
|
||||
class CollectionsAppConfig(AppConfig):
|
||||
name = 'ccdb.collections_ccdb'
|
||||
verbose_name = 'Collections'
|
158
ccdb/collections_ccdb/migrations/0001_initial.py
Normal file
158
ccdb/collections_ccdb/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,158 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import autoslug.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('locations', '0002_remove_site_fk_dupes'),
|
||||
('projects', '0004_initial_grantreport'),
|
||||
('processing', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ADFGPermit',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('sort_order', models.IntegerField(null=True, blank=True)),
|
||||
('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Collection',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=True)),
|
||||
('number_of_traps', models.IntegerField(null=True, blank=True)),
|
||||
('collection_start_date', models.DateField(null=True, blank=True)),
|
||||
('collection_start_time', models.TimeField(null=True, blank=True)),
|
||||
('collection_end_date', models.DateField(null=True, blank=True)),
|
||||
('collection_end_time', models.TimeField(null=True, blank=True)),
|
||||
('specimen_state', models.CharField(max_length=50, blank=True)),
|
||||
('adfg_permit', models.ForeignKey(to='collections_ccdb.ADFGPermit', blank=True, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CollectionMethod',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=True)),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('code', models.CharField(max_length=10, blank=True)),
|
||||
('collection_method_class', models.CharField(max_length=50, blank=True)),
|
||||
('sort_order', models.IntegerField(null=True, blank=True)),
|
||||
('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CollectionTrap',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=True)),
|
||||
('number_of_traps', models.IntegerField()),
|
||||
('date_opened', models.DateField()),
|
||||
('time_opened', models.TimeField()),
|
||||
('date_closed', models.DateField()),
|
||||
('time_closed', models.TimeField()),
|
||||
('collection', models.ForeignKey(to='collections_ccdb.Collection')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CollectionType',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=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(editable=False, populate_from='name')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DatasheetAttachment',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=True)),
|
||||
('datasheet', models.FileField(verbose_name='Datasheet', upload_to='collections/datasheets/%Y/%m/%d')),
|
||||
('collection', models.ForeignKey(to='collections_ccdb.Collection')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Flaw',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('description', models.CharField(max_length=255, blank=True)),
|
||||
('sort_order', models.IntegerField(null=True, blank=True)),
|
||||
('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='collectiontype',
|
||||
unique_together=set([('name', 'code')]),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='collectionmethod',
|
||||
unique_together=set([('name', 'code')]),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='collection',
|
||||
name='collection_method',
|
||||
field=models.ForeignKey(to='collections_ccdb.CollectionMethod'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='collection',
|
||||
name='collection_type',
|
||||
field=models.ForeignKey(to='collections_ccdb.CollectionType'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='collection',
|
||||
name='flaw',
|
||||
field=models.ForeignKey(to='collections_ccdb.Flaw', blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='collection',
|
||||
name='process_type',
|
||||
field=models.ForeignKey(to='processing.ProcessType', blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='collection',
|
||||
name='project',
|
||||
field=models.ForeignKey(to='projects.Project'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='collection',
|
||||
name='reagent',
|
||||
field=models.ForeignKey(to='processing.Reagent', blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='collection',
|
||||
name='storage_location',
|
||||
field=models.ForeignKey(to='locations.StorageLocation', blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='collection',
|
||||
name='study_location',
|
||||
field=models.ForeignKey(to='locations.StudyLocation'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='collectiontrap',
|
||||
unique_together=set([('collection', 'date_opened', 'time_opened', 'date_closed', 'time_closed')]),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='collection',
|
||||
unique_together=set([('project', 'study_location', 'collection_type', 'collection_start_date', 'collection_end_date', 'collection_method')]),
|
||||
),
|
||||
]
|
|
@ -3,27 +3,103 @@ from django.db import models
|
|||
from autoslug import AutoSlugField
|
||||
|
||||
|
||||
# class Collection(models.Model):
|
||||
# project = models.ForeignKey('projects.Project')
|
||||
# study_location = models.ForeignKey('locations.StudyLocation')
|
||||
# collection_type = models.ForeignKey(CollectionType)
|
||||
# collection_method = models.ForeignKey(CollectionMethod)
|
||||
# number_of_traps = models.IntegerField(blank=True, null=True)
|
||||
# collection_start_date = models.DateField(blank=True, null=True)
|
||||
# collection_start_time = models.TimeField(blank=True, null=True)
|
||||
# collection_end_date = models.DateField(blank=True, null=True)
|
||||
# collection_end_time = models.TimeField(blank=True, null=True)
|
||||
# storage_location = models.ForeignKey('locations.StorageLocation', blank=True, null=True)
|
||||
# specimen_state = models.CharField(max_length=50, blank=True)
|
||||
# process_type = models.ForeignKey('processing.ProcessType', blank=True, null=True)
|
||||
# reagent = models.ForeignKey('processing.Reagent', blank=True, null=True)
|
||||
# # adfg_permit = models.CharField(db_column='ADFG_Permit', max_length=25, blank=True, null=True) # Field name made lowercase.
|
||||
# # link_to_datasheets = models.CharField(db_column='Link_To_Datasheets', max_length=255, blank=True, null=True) # Field name made lowercase.
|
||||
# flaw = models.ForeignKey(Flaw, blank=True, null=True)
|
||||
#
|
||||
# def __str__(self):
|
||||
# return "{project} {study_location} {collection_type} {collection_method}".format(**self)
|
||||
#
|
||||
# class Meta:
|
||||
# unique_together = ('project', 'study_location', 'collection_type',
|
||||
# 'collection_start_date', 'collection_end_date', 'collection_method')
|
||||
class CollectionType(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 CollectionMethod(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
code = models.CharField(max_length=10, blank=True)
|
||||
collection_method_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 ADFGPermit(models.Model):
|
||||
name = models.CharField(max_length=200)
|
||||
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 Collection(models.Model):
|
||||
project = models.ForeignKey('projects.Project')
|
||||
study_location = models.ForeignKey('locations.StudyLocation')
|
||||
collection_type = models.ForeignKey(CollectionType)
|
||||
collection_method = models.ForeignKey(CollectionMethod)
|
||||
number_of_traps = models.IntegerField(blank=True, null=True)
|
||||
collection_start_date = models.DateField(blank=True, null=True)
|
||||
collection_start_time = models.TimeField(blank=True, null=True)
|
||||
collection_end_date = models.DateField(blank=True, null=True)
|
||||
collection_end_time = models.TimeField(blank=True, null=True)
|
||||
storage_location = models.ForeignKey('locations.StorageLocation', blank=True, null=True)
|
||||
specimen_state = models.CharField(max_length=50, blank=True)
|
||||
process_type = models.ForeignKey('processing.ProcessType', blank=True, null=True)
|
||||
reagent = models.ForeignKey('processing.Reagent', blank=True, null=True)
|
||||
adfg_permit = models.ForeignKey(ADFGPermit, blank=True, null=True)
|
||||
flaw = models.ForeignKey(Flaw, blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return "{} {} {} {} {} {}".format(self.project, self.study_location,
|
||||
self.collection_start_date, self.collection_end_date,
|
||||
self.collection_type, self.collection_method)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('project', 'study_location', 'collection_type',
|
||||
'collection_start_date', 'collection_end_date', 'collection_method')
|
||||
|
||||
|
||||
class DatasheetAttachment(models.Model):
|
||||
collection = models.ForeignKey(Collection)
|
||||
datasheet = models.FileField("Datasheet",
|
||||
upload_to='collections/datasheets/%Y/%m/%d')
|
||||
|
||||
|
||||
class CollectionTrap(models.Model):
|
||||
collection = models.ForeignKey(Collection)
|
||||
number_of_traps = models.IntegerField()
|
||||
date_opened = models.DateField()
|
||||
time_opened = models.TimeField()
|
||||
date_closed = models.DateField()
|
||||
time_closed = models.TimeField()
|
||||
|
||||
def __str__(self):
|
||||
return "{collection} {number_of_traps} {date_opened} {date_closed}".format(self)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('collection', 'date_opened', 'time_opened', 'date_closed', 'time_closed')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue