add counter for public_mark and change Guid serializer
This commit is contained in:
parent
db5c879459
commit
d7c7880860
|
|
@ -184,7 +184,7 @@ class GuideElementBaseSerializer(serializers.ModelSerializer):
|
||||||
city_name = serializers.CharField(source='city.name', allow_null=True)
|
city_name = serializers.CharField(source='city.name', allow_null=True)
|
||||||
product_detail = ProductGuideElementSerializer(read_only=True, source='product')
|
product_detail = ProductGuideElementSerializer(read_only=True, source='product')
|
||||||
|
|
||||||
parent = RecursiveField(required=False)
|
children = RecursiveField(required=False, many=True, source='get_children')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
@ -200,6 +200,6 @@ class GuideElementBaseSerializer(serializers.ModelSerializer):
|
||||||
'city_name',
|
'city_name',
|
||||||
'section_name',
|
'section_name',
|
||||||
'wine_color_section_name',
|
'wine_color_section_name',
|
||||||
'parent',
|
'children',
|
||||||
'label_photo',
|
'label_photo',
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -116,5 +116,8 @@ class GuideElementListView(GuideElementBaseView,
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
"""Overridden get_queryset method."""
|
"""Overridden get_queryset method."""
|
||||||
guide = get_object_or_404(models.Guide.objects.all(), pk=self.kwargs.get('pk'))
|
guide = get_object_or_404(models.Guide.objects.all(), pk=self.kwargs.get('pk'))
|
||||||
return models.GuideElement.objects.get_root_node(guide) \
|
node = models.GuideElement.objects.get_root_node(guide)
|
||||||
.get_descendants()
|
if node:
|
||||||
|
return node.get_children()
|
||||||
|
else:
|
||||||
|
return models.GuideElement.objects.none()
|
||||||
|
|
|
||||||
|
|
@ -534,6 +534,9 @@ class Establishment(GalleryMixin, ProjectBaseMixin, URLImageMixin,
|
||||||
|
|
||||||
def delete(self, using=None, keep_parents=False):
|
def delete(self, using=None, keep_parents=False):
|
||||||
"""Overridden delete method"""
|
"""Overridden delete method"""
|
||||||
|
# TODO: If this does not contradict the plan,
|
||||||
|
# it is better to change it.
|
||||||
|
# Just add CASCADE to Company and Note in establishment fk field.
|
||||||
# Delete all related companies
|
# Delete all related companies
|
||||||
self.companies.all().delete()
|
self.companies.all().delete()
|
||||||
# Delete all related notes
|
# Delete all related notes
|
||||||
|
|
@ -553,6 +556,14 @@ class Establishment(GalleryMixin, ProjectBaseMixin, URLImageMixin,
|
||||||
"""Removes some tags from detail Establishment representation"""
|
"""Removes some tags from detail Establishment representation"""
|
||||||
return self.visible_tags.exclude(category__index_name__in=['tag'])
|
return self.visible_tags.exclude(category__index_name__in=['tag'])
|
||||||
|
|
||||||
|
def recalculate_public_mark(self):
|
||||||
|
fresh_review = self.reviews.published().order_by('-modified').first()
|
||||||
|
if fresh_review:
|
||||||
|
self.public_mark = fresh_review.mark
|
||||||
|
else:
|
||||||
|
self.public_mark = None
|
||||||
|
self.save()
|
||||||
|
|
||||||
def recalculate_toque_number(self):
|
def recalculate_toque_number(self):
|
||||||
toque_number = 0
|
toque_number = 0
|
||||||
if self.address and self.public_mark:
|
if self.address and self.public_mark:
|
||||||
|
|
|
||||||
|
|
@ -43,3 +43,10 @@ def update_establishment_indices():
|
||||||
else:
|
else:
|
||||||
qs = doc().get_indexing_queryset()
|
qs = doc().get_indexing_queryset()
|
||||||
doc().update(qs)
|
doc().update(qs)
|
||||||
|
|
||||||
|
|
||||||
|
@shared_task
|
||||||
|
def recalculation_public_mark(establishment_id):
|
||||||
|
establishment = models.Establishment.objects.get(id=establishment_id)
|
||||||
|
establishment.recalculate_public_mark()
|
||||||
|
establishment.recalculate_toque_number()
|
||||||
|
|
|
||||||
|
|
@ -5,3 +5,6 @@ from django.utils.translation import gettext_lazy as _
|
||||||
class ReviewConfig(AppConfig):
|
class ReviewConfig(AppConfig):
|
||||||
name = 'review'
|
name = 'review'
|
||||||
verbose_name = _('reviews')
|
verbose_name = _('reviews')
|
||||||
|
|
||||||
|
def ready(self):
|
||||||
|
import review.signals
|
||||||
|
|
|
||||||
14
apps/review/signals.py
Normal file
14
apps/review/signals.py
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
from django.db.models.signals import post_save
|
||||||
|
from django.dispatch import receiver
|
||||||
|
|
||||||
|
from review import models
|
||||||
|
from establishment import tasks
|
||||||
|
from establishment.models import Establishment
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(post_save, sender=models.Review)
|
||||||
|
def create_order(sender, instance=None, created=False, **kwargs):
|
||||||
|
"""Recalculation public mark for establishment."""
|
||||||
|
if isinstance(instance.content_object, Establishment):
|
||||||
|
tasks.recalculation_public_mark.delay(
|
||||||
|
establishment_id=instance.content_object.id)
|
||||||
|
|
@ -14,6 +14,7 @@ services:
|
||||||
- "5436:5432"
|
- "5436:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- gm-db:/var/lib/postgresql/data/
|
- gm-db:/var/lib/postgresql/data/
|
||||||
|
- .:/code
|
||||||
|
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
image: elasticsearch:7.3.1
|
image: elasticsearch:7.3.1
|
||||||
|
|
|
||||||
|
|
@ -86,11 +86,11 @@ LOGGING = {
|
||||||
'py.warnings': {
|
'py.warnings': {
|
||||||
'handlers': ['console'],
|
'handlers': ['console'],
|
||||||
},
|
},
|
||||||
'django.db.backends': {
|
# 'django.db.backends': {
|
||||||
'handlers': ['console', ],
|
# 'handlers': ['console', ],
|
||||||
'level': 'DEBUG',
|
# 'level': 'DEBUG',
|
||||||
'propagate': False,
|
# 'propagate': False,
|
||||||
},
|
# },
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user