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')
class AwardQuerySet(models.QuerySet):
def with_base_related(self):
return self.prefetch_related('award_type')
class Award(TranslatedFieldsMixin, URLImageMixin, models.Model):
"""Award model."""
WAITING = 0
@ -200,6 +206,8 @@ class Award(TranslatedFieldsMixin, URLImageMixin, models.Model):
old_id = models.IntegerField(null=True, blank=True)
objects = AwardQuerySet.as_manager()
def __str__(self):
title = 'None'
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):
"""Award base serializer."""
@ -210,6 +219,8 @@ class AwardBaseSerializer(serializers.ModelSerializer):
class AwardSerializer(AwardBaseSerializer):
"""Award serializer."""
award_type = AwardTypeBaseSerializer(read_only=True)
class Meta:
model = models.Award
fields = AwardBaseSerializer.Meta.fields + ['award_type', ]
@ -218,6 +229,8 @@ class AwardSerializer(AwardBaseSerializer):
class BackAwardSerializer(AwardBaseSerializer):
"""Award serializer."""
award_type = AwardTypeBaseSerializer(read_only=True)
class Meta:
model = models.Award
fields = AwardBaseSerializer.Meta.fields + [

View File

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

View File

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