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):
|
||||
|
||||
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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user