partners web
This commit is contained in:
parent
e6de2cc4f9
commit
442e26cfe4
|
|
@ -10,14 +10,7 @@ from utils.models import ImageMixin, ProjectBaseMixin
|
||||||
class PartnerQueryset(models.QuerySet):
|
class PartnerQueryset(models.QuerySet):
|
||||||
|
|
||||||
def with_base_related(self):
|
def with_base_related(self):
|
||||||
return self.prefetch_related('establishment__establishment_type', 'establishment__establishment_subtypes',
|
return self.prefetch_related('partnertoestablishment_set', 'country')
|
||||||
'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')
|
|
||||||
|
|
||||||
|
|
||||||
class Partner(ProjectBaseMixin):
|
class Partner(ProjectBaseMixin):
|
||||||
|
|
@ -55,6 +48,12 @@ class Partner(ProjectBaseMixin):
|
||||||
return self.MODEL_TYPES[self.type][1]
|
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):
|
class PartnerToEstablishment(models.Model):
|
||||||
partner_bind_date = models.DateTimeField(default=timezone.now, editable=False,
|
partner_bind_date = models.DateTimeField(default=timezone.now, editable=False,
|
||||||
verbose_name=_('Date partner binded'))
|
verbose_name=_('Date partner binded'))
|
||||||
|
|
@ -65,3 +64,6 @@ class PartnerToEstablishment(models.Model):
|
||||||
image = models.URLField(verbose_name=_('Partner image URL'), null=True)
|
image = models.URLField(verbose_name=_('Partner image URL'), null=True)
|
||||||
partner = models.ForeignKey(Partner, on_delete=models.CASCADE, null=True)
|
partner = models.ForeignKey(Partner, on_delete=models.CASCADE, null=True)
|
||||||
establishment = models.ForeignKey('establishment.Establishment', on_delete=models.CASCADE, null=True)
|
establishment = models.ForeignKey('establishment.Establishment', on_delete=models.CASCADE, null=True)
|
||||||
|
|
||||||
|
objects = PartnerToEstablishmentQuerySet.as_manager()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,22 @@ from partner import models
|
||||||
|
|
||||||
|
|
||||||
# Serializers
|
# Serializers
|
||||||
class PartnerSerializer(serializers.ModelSerializer):
|
class PartnersForEstablishmentSerializer(serializers.ModelSerializer):
|
||||||
"""Serializer for model Partner"""
|
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:
|
class Meta:
|
||||||
"""Meta class"""
|
model = models.PartnerToEstablishment
|
||||||
model = models.Partner
|
|
||||||
fields = (
|
fields = (
|
||||||
'id',
|
'id',
|
||||||
# 'image',
|
'name',
|
||||||
'url'
|
'type',
|
||||||
|
'type_display',
|
||||||
|
'starting_date', # own field
|
||||||
|
'expiry_date', # own field
|
||||||
|
'price_per_month', # own field
|
||||||
|
'url', # own field
|
||||||
|
'image', # own field
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class PartnerLstView(generics.ListCreateAPIView):
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentPartners(generics.ListAPIView):
|
class EstablishmentPartners(generics.ListAPIView):
|
||||||
queryset = PartnerToEstablishment.objects.prefetch_related('partner', 'partner__country')
|
queryset = PartnerToEstablishment.objects.with_base_related()
|
||||||
serializer_class = serializers.PartnersForEstablishmentSerializer
|
serializer_class = serializers.PartnersForEstablishmentSerializer
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
filter_class = filters.PartnerToEstablishmentFilterSet
|
filter_class = filters.PartnerToEstablishmentFilterSet
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ from partner.serializers import common as serializers
|
||||||
# Mixins
|
# Mixins
|
||||||
class PartnerViewMixin(generics.GenericAPIView):
|
class PartnerViewMixin(generics.GenericAPIView):
|
||||||
"""View mixin for Partner views"""
|
"""View mixin for Partner views"""
|
||||||
queryset = models.Partner.objects.distinct("name")
|
queryset = models.PartnerToEstablishment.objects.with_base_related()
|
||||||
|
|
||||||
|
|
||||||
# Views
|
# Views
|
||||||
|
|
@ -16,4 +16,4 @@ class PartnerListView(PartnerViewMixin, generics.ListAPIView):
|
||||||
"""List Partner view"""
|
"""List Partner view"""
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
permission_classes = (permissions.AllowAny, )
|
permission_classes = (permissions.AllowAny, )
|
||||||
serializer_class = serializers.PartnerSerializer
|
serializer_class = serializers.PartnersForEstablishmentSerializer
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user