Commit 146c2f0c by Bill Filler Committed by Matt Tuchfarber

add filter and ordering support

parent 279062c0
'''Filter class for Journals'''
from course_discovery.apps.journal.models import Journal
from course_discovery.apps.journal.choices import JournalStatus
from django_filters import rest_framework as filters
class CharListFilter(filters.CharFilter):
""" Filters a field via a comma-delimited list of values. """
def filter(self, qs, value):
if value not in (None, ''):
value = value.split(',')
return super(CharListFilter, self).filter(qs, value)
class JournalFilter(filters.FilterSet):
status = filters.MultipleChoiceFilter(choices=JournalStatus.choices)
orgs = CharListFilter(name='organization__key', lookup_expr='in')
class Meta:
model = Journal
fields = ('orgs', 'status',)
......@@ -5,6 +5,7 @@ from rest_framework_extensions.cache.mixins import CacheResponseMixin
from rest_framework.permissions import IsAuthenticated
from course_discovery.apps.journal.models import Journal, JournalBundle
from course_discovery.apps.journal.api.filters import JournalFilter
from course_discovery.apps.journal.api.serializers import JournalSerializer, JournalBundleSerializer
from course_discovery.apps.journal import constants as journal_constants
......@@ -15,8 +16,10 @@ class JournalViewSet(viewsets.ModelViewSet):
"""
lookup_field = 'uuid'
lookup_value_regex = journal_constants.UUID_PATTERN
queryset = Journal.objects.all()
queryset = Journal.objects.all().order_by('-created')
serializer_class = JournalSerializer
filter_backends = (DjangoFilterBackend,)
filter_class = JournalFilter
class JournalBundleViewSet(CacheResponseMixin, viewsets.ReadOnlyModelViewSet):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment