partners web

This commit is contained in:
Kuroshini 2020-01-30 16:37:41 +03:00
parent e6de2cc4f9
commit 442e26cfe4
4 changed files with 28 additions and 17 deletions

View File

@ -10,14 +10,7 @@ from utils.models import ImageMixin, ProjectBaseMixin
class PartnerQueryset(models.QuerySet):
def with_base_related(self):
return self.prefetch_related('establishment__establishment_type', 'establishment__establishment_subtypes',
'establishment__awards', 'establishment__schedule', 'establishment__phones',
'establishment__gallery', 'establishment__menu_set',
'establishment__menu_set__plates', 'establishment__menu_set__plates__currency',
'establishment__currency', 'establishment__address__city',
'establishment__address__city__region',
'establishment__address__city__region__country',
'establishment__address__city__country', 'country')
return self.prefetch_related('partnertoestablishment_set', 'country')
class Partner(ProjectBaseMixin):
@ -55,6 +48,12 @@ class Partner(ProjectBaseMixin):
return self.MODEL_TYPES[self.type][1]
class PartnerToEstablishmentQuerySet(models.QuerySet):
def with_base_related(self):
return self.prefetch_related('partner', 'partner__country')
class PartnerToEstablishment(models.Model):
partner_bind_date = models.DateTimeField(default=timezone.now, editable=False,
verbose_name=_('Date partner binded'))
@ -65,3 +64,6 @@ class PartnerToEstablishment(models.Model):
image = models.URLField(verbose_name=_('Partner image URL'), null=True)
partner = models.ForeignKey(Partner, on_delete=models.CASCADE, null=True)
establishment = models.ForeignKey('establishment.Establishment', on_delete=models.CASCADE, null=True)
objects = PartnerToEstablishmentQuerySet.as_manager()

View File

@ -4,13 +4,22 @@ from partner import models
# Serializers
class PartnerSerializer(serializers.ModelSerializer):
"""Serializer for model Partner"""
class PartnersForEstablishmentSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(source='partner.pk', read_only=True)
name = serializers.CharField(source='partner.name', read_only=True)
type = serializers.IntegerField(source='partner.type', read_only=True)
type_display = serializers.CharField(source='partner.type_display', read_only=True)
class Meta:
"""Meta class"""
model = models.Partner
model = models.PartnerToEstablishment
fields = (
'id',
# 'image',
'url'
'name',
'type',
'type_display',
'starting_date', # own field
'expiry_date', # own field
'price_per_month', # own field
'url', # own field
'image', # own field
)

View File

@ -25,7 +25,7 @@ class PartnerLstView(generics.ListCreateAPIView):
class EstablishmentPartners(generics.ListAPIView):
queryset = PartnerToEstablishment.objects.prefetch_related('partner', 'partner__country')
queryset = PartnerToEstablishment.objects.with_base_related()
serializer_class = serializers.PartnersForEstablishmentSerializer
pagination_class = None
filter_class = filters.PartnerToEstablishmentFilterSet

View File

@ -8,7 +8,7 @@ from partner.serializers import common as serializers
# Mixins
class PartnerViewMixin(generics.GenericAPIView):
"""View mixin for Partner views"""
queryset = models.Partner.objects.distinct("name")
queryset = models.PartnerToEstablishment.objects.with_base_related()
# Views
@ -16,4 +16,4 @@ class PartnerListView(PartnerViewMixin, generics.ListAPIView):
"""List Partner view"""
pagination_class = None
permission_classes = (permissions.AllowAny, )
serializer_class = serializers.PartnerSerializer
serializer_class = serializers.PartnersForEstablishmentSerializer