From c866721c8d5bb56978a36e77055e3f818379d427 Mon Sep 17 00:00:00 2001 From: Anatoly Date: Fri, 7 Feb 2020 12:58:38 +0300 Subject: [PATCH] added a documentation for awards types --- apps/main/filters.py | 20 ++++++++++++++++ apps/main/models.py | 4 ++++ apps/main/views/back.py | 52 +++++++++++++++++++++++++---------------- 3 files changed, 56 insertions(+), 20 deletions(-) diff --git a/apps/main/filters.py b/apps/main/filters.py index 72636d9e..065cfdd0 100644 --- a/apps/main/filters.py +++ b/apps/main/filters.py @@ -38,3 +38,23 @@ class AwardFilter(filters.FilterSet): if value not in EMPTY_VALUES: return queryset.by_employee_id(value, content_type='establishmentemployee') return queryset + + +class AwardTypeFilterSet(filters.FilterSet): + """Award type FilterSet.""" + + id = filters.NumberFilter(help_text='Filter by AwardType identifier.') + name = filters.CharFilter(method='by_name', help_text='Filter by AwardType name.') + + class Meta: + """Meta class.""" + model = models.AwardType + fields = [ + 'id', + 'name', + ] + + def by_name(self, queryset, name, value): + if value not in EMPTY_VALUES: + return queryset.by_name(value) + return queryset \ No newline at end of file diff --git a/apps/main/models.py b/apps/main/models.py index 639621a3..343b75d4 100644 --- a/apps/main/models.py +++ b/apps/main/models.py @@ -223,6 +223,10 @@ class AwardTypeQuerySet(models.QuerySet): """Filter QuerySet by country code.""" return self.filter(country__code=country_code) + def by_name(self, name: str): + """Filter by name field.""" + return self.filter(name__icontains=name) + class AwardType(models.Model): """AwardType model.""" diff --git a/apps/main/views/back.py b/apps/main/views/back.py index 8f264ac6..bf764076 100644 --- a/apps/main/views/back.py +++ b/apps/main/views/back.py @@ -9,7 +9,7 @@ from establishment.models import Employee from establishment.serializers.back import EmployeeBackSerializers from main import serializers from main import tasks -from main.filters import AwardFilter +from main.filters import AwardFilter, AwardTypeFilterSet from main.models import Award, Footer, PageType, Panel, SiteFeature, Feature, AwardType from main.serializers.back import PanelSerializer from main.views import SiteSettingsView, SiteListView @@ -31,19 +31,19 @@ class AwardLstView(generics.ListCreateAPIView): * vintage_year (`str`) - Filter by a vintage year ##### Response E.g.: - ``` + ``` + { + "count": 58, + "next": 2, + "previous": null, + "results": [ { - "count": 58, - "next": 2, - "previous": null, - "results": [ - { - "id": 1, - ... - } - ] + "id": 1, + ... } - ``` + ] + } + ``` ### *POST* #### Description @@ -168,20 +168,32 @@ class AwardRUDView(generics.RetrieveUpdateDestroyAPIView): class AwardTypesListView(generics.ListAPIView): - """AwardType List view.""" + """ + ## List of Award types view. + ### *GET* + #### Description + Return non paginated list of Award types filtered by request country code. + Available filters: + * id (`int`) - award type identifier + * name (`str`) - award type name + ##### Response + ``` + [ + { + "id": 1, + ... + } + ] + ``` + """ pagination_class = None serializer_class = serializers.AwardTypeBaseSerializer permission_classes = get_permission_classes() - filter_backends = (DjangoFilterBackend,) - ordering_fields = '__all__' lookup_field = 'id' - filterset_fields = ( - 'id', - 'name', - ) + filter_class = AwardTypeFilterSet def get_queryset(self): - """Overridden get_queryset method.""" + """An overridden get_queryset method.""" if hasattr(self, 'request') and hasattr(self.request, 'country_code'): return AwardType.objects.by_country_code(self.request.country_code) return AwardType.objects.none()