verbose award_type for API

This commit is contained in:
Kuroshini 2020-01-23 18:26:02 +03:00
parent 3ebd859686
commit dd1b241c41
4 changed files with 25 additions and 4 deletions

View File

@ -175,6 +175,12 @@ class SiteFeature(ProjectBaseMixin):
unique_together = ('site_settings', 'feature') unique_together = ('site_settings', 'feature')
class AwardQuerySet(models.QuerySet):
def with_base_related(self):
return self.prefetch_related('award_type')
class Award(TranslatedFieldsMixin, URLImageMixin, models.Model): class Award(TranslatedFieldsMixin, URLImageMixin, models.Model):
"""Award model.""" """Award model."""
WAITING = 0 WAITING = 0
@ -200,6 +206,8 @@ class Award(TranslatedFieldsMixin, URLImageMixin, models.Model):
old_id = models.IntegerField(null=True, blank=True) old_id = models.IntegerField(null=True, blank=True)
objects = AwardQuerySet.as_manager()
def __str__(self): def __str__(self):
title = 'None' title = 'None'
lang = TranslationSettings.get_solo().default_language lang = TranslationSettings.get_solo().default_language

View File

@ -192,6 +192,15 @@ class SiteShortSerializer(serializers.ModelSerializer):
] ]
class AwardTypeBaseSerializer(serializers.ModelSerializer):
class Meta:
model = models.AwardType
fields = (
'id',
'name',
)
class AwardBaseSerializer(serializers.ModelSerializer): class AwardBaseSerializer(serializers.ModelSerializer):
"""Award base serializer.""" """Award base serializer."""
@ -210,6 +219,8 @@ class AwardBaseSerializer(serializers.ModelSerializer):
class AwardSerializer(AwardBaseSerializer): class AwardSerializer(AwardBaseSerializer):
"""Award serializer.""" """Award serializer."""
award_type = AwardTypeBaseSerializer(read_only=True)
class Meta: class Meta:
model = models.Award model = models.Award
fields = AwardBaseSerializer.Meta.fields + ['award_type', ] fields = AwardBaseSerializer.Meta.fields + ['award_type', ]
@ -218,6 +229,8 @@ class AwardSerializer(AwardBaseSerializer):
class BackAwardSerializer(AwardBaseSerializer): class BackAwardSerializer(AwardBaseSerializer):
"""Award serializer.""" """Award serializer."""
award_type = AwardTypeBaseSerializer(read_only=True)
class Meta: class Meta:
model = models.Award model = models.Award
fields = AwardBaseSerializer.Meta.fields + [ fields = AwardBaseSerializer.Meta.fields + [

View File

@ -15,7 +15,7 @@ from main.views import SiteSettingsView, SiteListView
class AwardLstView(generics.ListCreateAPIView): class AwardLstView(generics.ListCreateAPIView):
"""Award list create view.""" """Award list create view."""
queryset = Award.objects.all() queryset = Award.objects.all().with_base_related()
serializer_class = serializers.BackAwardSerializer serializer_class = serializers.BackAwardSerializer
permission_classes = (permissions.IsAdminUser,) permission_classes = (permissions.IsAdminUser,)
filterset_class = AwardFilter filterset_class = AwardFilter
@ -23,7 +23,7 @@ class AwardLstView(generics.ListCreateAPIView):
class AwardRUDView(generics.RetrieveUpdateDestroyAPIView): class AwardRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Award RUD view.""" """Award RUD view."""
queryset = Award.objects.all() queryset = Award.objects.all().with_base_related()
serializer_class = serializers.BackAwardSerializer serializer_class = serializers.BackAwardSerializer
permission_classes = (permissions.IsAdminUser,) permission_classes = (permissions.IsAdminUser,)
lookup_field = 'id' lookup_field = 'id'

View File

@ -53,14 +53,14 @@ from utils.serializers import EmptySerializer
class AwardView(generics.ListAPIView): class AwardView(generics.ListAPIView):
"""Awards list view.""" """Awards list view."""
serializer_class = serializers.AwardSerializer serializer_class = serializers.AwardSerializer
queryset = models.Award.objects.all() queryset = models.Award.objects.all().with_base_related()
permission_classes = (permissions.AllowAny,) permission_classes = (permissions.AllowAny,)
class AwardRetrieveView(generics.RetrieveAPIView): class AwardRetrieveView(generics.RetrieveAPIView):
"""Award retrieve view.""" """Award retrieve view."""
serializer_class = serializers.AwardSerializer serializer_class = serializers.AwardSerializer
queryset = models.Award.objects.all() queryset = models.Award.objects.all().with_base_related()
permission_classes = (permissions.IsAuthenticatedOrReadOnly,) permission_classes = (permissions.IsAuthenticatedOrReadOnly,)