MAINT: Upgrade to Django 1.11 (#45)

This commit is contained in:
Matthew Ryan Dillon 2018-01-25 06:51:32 -07:00 committed by GitHub
parent 17899ad7c7
commit a482019a81
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 101 additions and 67 deletions

View file

@ -38,11 +38,12 @@ router.register(r'species', species_viewsets.SpeciesViewSet)
router.register(r'collection-species',
species_viewsets.CollectionSpeciesViewSet)
app_name = 'api'
urlpatterns = [
url(r'^auth/login/', api_v.Login.as_view()),
url(r'^auth/password/reset/confirm/',
api_v.PasswordResetConfirm.as_view()),
url(r'^auth/password/reset/', api_v.PasswordReset.as_view()),
url(r'^auth/', include('djoser.urls.authtoken')),
url(r'^v1/', include(router.urls, namespace='v1')),
url(r'^v1/', include((router.urls, 'api_v1'), namespace='v1')),
]

View file

@ -9,43 +9,43 @@ from ccdb.species.models import Species
class CollectionFilter(filters.FilterSet):
project = ModelMultipleChoiceFilter(
name='project__id',
field_name='project__id',
to_field_name='id',
queryset=Project.objects.all(),
)
region = ModelMultipleChoiceFilter(
name='study_location__site__region__id',
field_name='study_location__site__region__id',
to_field_name='id',
queryset=Region.objects.all(),
)
site = ModelMultipleChoiceFilter(
name='study_location__site__id',
field_name='study_location__site__id',
to_field_name='id',
queryset=Site.objects.all(),
)
study_location = ModelMultipleChoiceFilter(
name='study_location__id',
field_name='study_location__id',
to_field_name='id',
queryset=StudyLocation.objects.all(),
)
collection_method = ModelMultipleChoiceFilter(
name='collection_method__id',
field_name='collection_method__id',
to_field_name='id',
queryset=CollectionMethod.objects.all(),
)
adfg_permit = ModelMultipleChoiceFilter(
name='adfg_permit__id',
field_name='adfg_permit__id',
to_field_name='id',
queryset=ADFGPermit.objects.all(),
)
species = ModelMultipleChoiceFilter(
name='collection_species__species__id',
field_name='collection_species__species__id',
to_field_name='id',
queryset=Species.objects.all(),
)

View file

@ -56,13 +56,17 @@ class ADFGPermit(models.Model):
class Collection(models.Model):
project = models.ForeignKey('projects.Project', related_name='collections')
project = models.ForeignKey('projects.Project', related_name='collections',
on_delete=models.CASCADE)
study_location = models.ForeignKey('locations.StudyLocation',
related_name='collections')
related_name='collections',
on_delete=models.CASCADE)
collection_type = models.ForeignKey(CollectionType,
related_name='collections')
related_name='collections',
on_delete=models.CASCADE)
collection_method = models.ForeignKey(CollectionMethod,
related_name='collections')
related_name='collections',
on_delete=models.CASCADE)
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)
@ -71,16 +75,21 @@ class Collection(models.Model):
notes = models.TextField(blank=True, null=False)
storage_location = models.ForeignKey('locations.StorageLocation',
blank=True, null=True,
related_name='collections')
related_name='collections',
on_delete=models.CASCADE)
specimen_state = models.CharField(max_length=50, blank=True)
process_type = models.ForeignKey('processing.ProcessType', blank=True,
null=True, related_name='collections')
null=True, related_name='collections',
on_delete=models.CASCADE)
reagent = models.ForeignKey('processing.Reagent', blank=True, null=True,
related_name='collections')
related_name='collections',
on_delete=models.CASCADE)
adfg_permit = models.ForeignKey(ADFGPermit, blank=True, null=True,
related_name='collections')
related_name='collections',
on_delete=models.CASCADE)
collection_flaw = models.ForeignKey(Flaw, blank=True, null=True,
related_name='collections')
related_name='collections',
on_delete=models.CASCADE)
display_name = models.CharField(max_length=255, editable=False)
def save(self, *args, **kwargs):
@ -101,13 +110,15 @@ class Collection(models.Model):
class DatasheetAttachment(models.Model):
collection = models.ForeignKey(Collection, related_name='datasheets')
collection = models.ForeignKey(Collection, related_name='datasheets',
on_delete=models.CASCADE)
datasheet = models.FileField("Datasheet",
upload_to='collections/datasheets/%Y/%m/%d')
class CollectionTrap(models.Model):
collection = models.ForeignKey(Collection, related_name='traps')
collection = models.ForeignKey(Collection, related_name='traps',
on_delete=models.CASCADE)
number_of_traps = models.IntegerField()
date_opened = models.DateField()
time_opened = models.TimeField()
@ -126,7 +137,8 @@ class CollectionTrap(models.Model):
class CollectionMeasurement(models.Model):
collection = models.ForeignKey(Collection, related_name='env_measurements')
collection = models.ForeignKey(Collection, related_name='env_measurements',
on_delete=models.CASCADE)
date_measured = models.DateField()
time_measured = models.TimeField()
water_temp_c = models.FloatField(null=True)

View file

@ -18,7 +18,8 @@ class Experiment(models.Model):
code = models.CharField(max_length=10, blank=True)
description = models.CharField(max_length=255, blank=True)
flaw = models.ForeignKey(Flaw, blank=True, null=True,
related_name='experiments')
related_name='experiments',
on_delete=models.CASCADE)
sort_order = models.IntegerField(blank=True, null=True)
collections = models.ManyToManyField('collections_ccdb.Collection')
@ -31,7 +32,8 @@ class Experiment(models.Model):
class ProtocolAttachment(models.Model):
experiment = models.ForeignKey(Experiment, related_name='protocols')
experiment = models.ForeignKey(Experiment, related_name='protocols',
on_delete=models.CASCADE)
protocol = models.FileField(upload_to='experiments/protocols/%Y/%m/%d')
def __str__(self):
@ -40,7 +42,8 @@ class ProtocolAttachment(models.Model):
class TreatmentType(models.Model):
experiment = models.ForeignKey(Experiment, blank=True, null=True,
related_name='treatment_types')
related_name='treatment_types',
on_delete=models.CASCADE)
name = models.CharField(max_length=200)
code = models.CharField(max_length=25, blank=True)
treatment_type = models.CharField(max_length=50, blank=True)
@ -65,15 +68,20 @@ class TreatmentType(models.Model):
class Treatment(models.Model):
treatment_type = models.ForeignKey(TreatmentType,
related_name='treatments')
related_name='treatments',
on_delete=models.CASCADE)
container = models.ForeignKey('misc.Container', blank=True, null=True,
related_name='treatments')
related_name='treatments',
on_delete=models.CASCADE)
study_location = models.ForeignKey('locations.StudyLocation',
related_name='treatments')
species = models.ForeignKey('species.Species', related_name='treatments')
related_name='treatments',
on_delete=models.CASCADE)
species = models.ForeignKey('species.Species', related_name='treatments',
on_delete=models.CASCADE)
sex = models.CharField(max_length=25)
flaw = models.ForeignKey(Flaw, blank=True, null=True,
related_name='treatments')
related_name='treatments',
on_delete=models.CASCADE)
display_name = models.CharField(max_length=255, editable=False)
def save(self, *args, **kwargs):
@ -93,14 +101,16 @@ class Treatment(models.Model):
class TreatmentReplicate(models.Model):
treatment = models.ForeignKey(Treatment,
related_name='treatment_replicates')
related_name='treatment_replicates',
on_delete=models.CASCADE)
name = models.CharField(max_length=50)
setup_date = models.DateField(blank=True, null=True)
setup_time = models.TimeField(blank=True, null=True)
setup_sample_size = models.IntegerField(blank=True, null=True)
mass_g = models.FloatField(blank=True, null=True)
flaw = models.ForeignKey(Flaw, blank=True, null=True,
related_name='treatment_replicates')
related_name='treatment_replicates',
on_delete=models.CASCADE)
display_name = models.CharField(max_length=255, editable=False)
def save(self, *args, **kwargs):
@ -118,13 +128,15 @@ class TreatmentReplicate(models.Model):
class AliveDeadCount(models.Model):
treatment_replicate = models.ForeignKey(TreatmentReplicate,
related_name='alive_dead_counts')
related_name='alive_dead_counts',
on_delete=models.CASCADE)
status_date = models.DateField()
status_time = models.TimeField(blank=True, null=True)
count_alive = models.IntegerField(blank=True, null=True)
count_dead = models.IntegerField(blank=True, null=True)
flaw = models.ForeignKey(Flaw, blank=True, null=True,
related_name='alive_dead_counts')
related_name='alive_dead_counts',
on_delete=models.CASCADE)
def __str__(self):
return "{}".format(self.status_date)

View file

@ -16,7 +16,7 @@ class Region(models.Model):
class Site(models.Model):
region = models.ForeignKey(Region, blank=True, null=True,
related_name='sites')
related_name='sites', on_delete=models.CASCADE)
name = models.CharField(max_length=100)
code = models.CharField(max_length=10, blank=True)
description = models.CharField(max_length=255, blank=True)
@ -46,14 +46,16 @@ class MunicipalLocation(models.Model):
class StudyLocation(models.Model):
site = models.ForeignKey(Site, related_name='study_locations')
site = models.ForeignKey(Site, related_name='study_locations',
on_delete=models.CASCADE)
name = models.CharField(max_length=100)
code = models.CharField(max_length=10)
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,
related_name='study_locations')
related_name='study_locations',
on_delete=models.CASCADE)
collecting_location = models.BooleanField(default=False)
description = models.CharField(max_length=255, blank=True)
sort_order = models.IntegerField(blank=True, null=True)

View file

@ -25,7 +25,8 @@ class MeasurementType(models.Model):
'MeasurementUnit',
blank=True,
null=True,
related_name='measurement_types'
related_name='measurement_types',
on_delete=models.CASCADE,
)
sort_order = models.IntegerField(blank=True, null=True)
@ -71,12 +72,15 @@ class Container(models.Model):
code = models.CharField(max_length=10, blank=True)
application = models.CharField(max_length=50, blank=True)
color = models.ForeignKey(Color, blank=True, null=True,
related_name='containers')
related_name='containers',
on_delete=models.CASCADE)
material = models.ForeignKey(Material, blank=True, null=True,
related_name='containers')
related_name='containers',
on_delete=models.CASCADE)
volume = models.FloatField(blank=True, null=True)
measurement_unit = models.ForeignKey(MeasurementUnit, blank=True,
null=True, related_name='containers')
null=True, related_name='containers',
on_delete=models.CASCADE)
sort_order = models.IntegerField(blank=True, null=True)
def __str__(self):

View file

@ -42,19 +42,24 @@ class Flaw(models.Model):
class Processing(models.Model):
process_type = models.ForeignKey(ProcessType, related_name='processings')
container = models.ForeignKey('misc.Container', related_name='processings')
process_type = models.ForeignKey(ProcessType, related_name='processings',
on_delete=models.CASCADE)
container = models.ForeignKey('misc.Container', related_name='processings',
on_delete=models.CASCADE)
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,
related_name='processings')
related_name='processings',
on_delete=models.CASCADE)
reagent_volume = models.FloatField(blank=True, null=True)
measurement_unit = models.ForeignKey('misc.MeasurementUnit', blank=True,
null=True, related_name='processings')
null=True, related_name='processings',
on_delete=models.CASCADE)
minutes_in_reagent = models.IntegerField(blank=True, null=True)
flaw = models.ForeignKey(Flaw, blank=True, null=True,
related_name='processings')
related_name='processings',
on_delete=models.CASCADE)
def __str__(self):
return "{} {} {}".format(self.process_date, self.process_type,

View file

@ -32,7 +32,8 @@ class Grant(models.Model):
class GrantReport(models.Model):
grant = models.ForeignKey(Grant, related_name='reports')
grant = models.ForeignKey(Grant, related_name='reports',
on_delete=models.CASCADE)
title = models.CharField(max_length=200)
report_type = models.CharField(max_length=50, blank=True)
description = models.CharField(max_length=255, blank=True)

View file

@ -19,8 +19,10 @@ class Species(models.Model):
class TrapSpecies(models.Model):
collection_trap = models.ForeignKey('collections_ccdb.CollectionTrap',
related_name='trap_species')
species = models.ForeignKey(Species, related_name='trap_species')
related_name='trap_species',
on_delete=models.CASCADE)
species = models.ForeignKey(Species, related_name='trap_species',
on_delete=models.CASCADE)
sex = models.CharField(max_length=25, blank=True)
count = models.IntegerField(blank=True, null=True)
count_estimated = models.BooleanField(default=False)
@ -34,8 +36,10 @@ class TrapSpecies(models.Model):
class CollectionSpecies(models.Model):
collection = models.ForeignKey('collections_ccdb.Collection',
related_name='collection_species')
species = models.ForeignKey(Species, related_name='collection_species')
related_name='collection_species',
on_delete=models.CASCADE)
species = models.ForeignKey(Species, related_name='collection_species',
on_delete=models.CASCADE)
sex = models.CharField(max_length=25, blank=True)
count = models.IntegerField(blank=True, null=True)
count_estimated = models.BooleanField(default=False)

View file

@ -14,7 +14,7 @@ class AdminSection(models.Model):
class AdminEntry(models.Model):
package = models.CharField(max_length=255)
model = models.CharField(max_length=255)
section = models.ForeignKey(AdminSection)
section = models.ForeignKey(AdminSection, on_delete=models.CASCADE)
sort = models.IntegerField()
def admin_url(self, request=None):

View file

@ -1,4 +1,4 @@
from django.core.urlresolvers import reverse
from django.urls import reverse
from rest_framework import status
from rest_framework.test import APITestCase

View file

@ -27,14 +27,6 @@ INTERNAL_IPS = ('127.0.0.1', )
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
# http://stackoverflow.com/a/28560805/313548
class DisableMigrations(object):
def __contains__(self, item):
return True
def __getitem__(self, item):
return "notmigrations"
TESTS_IN_PROGRESS = False
if 'test' in sys.argv[1:] or 'jenkins' in sys.argv[1:]:
logging.disable(logging.CRITICAL)
@ -44,7 +36,8 @@ if 'test' in sys.argv[1:] or 'jenkins' in sys.argv[1:]:
DEBUG = False
TEMPLATE_DEBUG = False
TESTS_IN_PROGRESS = True
MIGRATION_MODULES = DisableMigrations()
MIGRATION_MODULES = {app[app.rfind('.') + 1:]: None
for app in INSTALLED_APPS}
MANIFEST_URL = env('MANIFEST_URL', default=None)
CORS_ORIGIN_ALLOW_ALL = False

View file

@ -4,13 +4,13 @@ from django.conf.urls.static import static
from django.contrib import admin
from django.views.generic import RedirectView
from django.views import defaults as default_views
from django.core.urlresolvers import reverse_lazy
from django.urls import reverse_lazy
urlpatterns = [
url(settings.ADMIN_URL, include(admin.site.urls)),
url(settings.ADMIN_URL, admin.site.urls),
url(r'^api-auth/', include('rest_framework.urls',
namespace='rest_framework')),
url(r'^api/', include('ccdb.api.urls', namespace='api')),
url(r'^api/', include('ccdb.api.urls')),
url(r'^$', RedirectView.as_view(url=reverse_lazy('admin:index'),
permanent=True)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View file

@ -1,4 +1,4 @@
django==1.10.8
django==1.11.9
# Configuration
django-environ==0.4.1
@ -17,8 +17,8 @@ python-dateutil==2.5.3
requests==2.11.0
# REST
djangorestframework==3.6.4
djangorestframework==3.7.7
django-cors-headers==1.3.1
django-filter==1.1
djoser==0.7.0
djangorestframework-jsonapi==2.1.1
djangorestframework-jsonapi==2.2.0

View file

@ -1,7 +1,7 @@
-r base.txt
Werkzeug==0.11.10
django-extensions==1.7.1
django-extensions==1.9.9
flake8==3.0.4
pygraphviz==1.3.1
ipython==5.1.0