ENH: Collection filterings (#30)

Fixes #29
This commit is contained in:
Matthew Ryan Dillon 2017-11-10 11:16:17 -07:00 committed by GitHub
parent 4a37d35694
commit b8e7bb9bcc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 102 additions and 5 deletions

View file

@ -0,0 +1,44 @@
from django_filters.filters import ModelMultipleChoiceFilter
from django_filters import rest_framework as filters
from .models import Collection, CollectionMethod
from ccdb.projects.models import Project
from ccdb.locations.models import Region, Site, StudyLocation
class CollectionFilter(filters.FilterSet):
project = ModelMultipleChoiceFilter(
name='project__id',
to_field_name='id',
queryset=Project.objects.all(),
)
region = ModelMultipleChoiceFilter(
name='study_location__site__region__id',
to_field_name='id',
queryset=Region.objects.all(),
)
site = ModelMultipleChoiceFilter(
name='study_location__site__id',
to_field_name='id',
queryset=Site.objects.all(),
)
study_location = ModelMultipleChoiceFilter(
name='study_location__id',
to_field_name='id',
queryset=StudyLocation.objects.all(),
)
collection_method = ModelMultipleChoiceFilter(
name='collection_method__id',
to_field_name='id',
queryset=CollectionMethod.objects.all(),
)
class Meta:
model = Collection
fields = ['project', 'region', 'site', 'study_location',
'collection_method', 'number_of_traps',
'collection_start_date', 'collection_end_date']

View file

@ -6,6 +6,7 @@ from .models import Collection, CollectionMethod, CollectionType, Flaw
class CollectionSerializer(serializers.ModelSerializer):
included_serializers = {
'project': 'ccdb.projects.serializers.ProjectSerializer',
'site': 'ccdb.locations.serializers.SiteSerializer',
'study_location': 'ccdb.locations.serializers.StudyLocationSerializer',
'collection_method':
'ccdb.collections_ccdb.serializers.CollectionMethodSerializer',

View file

@ -1,5 +1,7 @@
from rest_framework import viewsets
from django_filters import rest_framework as filters
from .filters import CollectionFilter
from .models import Collection, CollectionMethod, CollectionType, Flaw
from .serializers import (CollectionSerializer, CollectionMethodSerializer,
CollectionTypeSerializer, FlawSerializer)
@ -8,6 +10,8 @@ from .serializers import (CollectionSerializer, CollectionMethodSerializer,
class CollectionViewSet(viewsets.ModelViewSet):
queryset = Collection.objects.all()
serializer_class = CollectionSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_class = CollectionFilter
class CollectionMethodViewSet(viewsets.ModelViewSet):