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)
|
||||
product_detail = ProductGuideElementSerializer(read_only=True, source='product')
|
||||
|
||||
parent = RecursiveField(required=False)
|
||||
children = RecursiveField(required=False, many=True, source='get_children')
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
|
|
@ -200,6 +200,6 @@ class GuideElementBaseSerializer(serializers.ModelSerializer):
|
|||
'city_name',
|
||||
'section_name',
|
||||
'wine_color_section_name',
|
||||
'parent',
|
||||
'children',
|
||||
'label_photo',
|
||||
]
|
||||
|
|
|
|||
|
|
@ -116,5 +116,8 @@ class GuideElementListView(GuideElementBaseView,
|
|||
def get_queryset(self):
|
||||
"""Overridden get_queryset method."""
|
||||
guide = get_object_or_404(models.Guide.objects.all(), pk=self.kwargs.get('pk'))
|
||||
return models.GuideElement.objects.get_root_node(guide) \
|
||||
.get_descendants()
|
||||
node = models.GuideElement.objects.get_root_node(guide)
|
||||
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):
|
||||
"""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
|
||||
self.companies.all().delete()
|
||||
# Delete all related notes
|
||||
|
|
@ -553,6 +556,14 @@ class Establishment(GalleryMixin, ProjectBaseMixin, URLImageMixin,
|
|||
"""Removes some tags from detail Establishment representation"""
|
||||
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):
|
||||
toque_number = 0
|
||||
if self.address and self.public_mark:
|
||||
|
|
|
|||
|
|
@ -43,3 +43,10 @@ def update_establishment_indices():
|
|||
else:
|
||||
qs = doc().get_indexing_queryset()
|
||||
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):
|
||||
name = 'review'
|
||||
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"
|
||||
volumes:
|
||||
- gm-db:/var/lib/postgresql/data/
|
||||
- .:/code
|
||||
|
||||
elasticsearch:
|
||||
image: elasticsearch:7.3.1
|
||||
|
|
|
|||
|
|
@ -86,11 +86,11 @@ LOGGING = {
|
|||
'py.warnings': {
|
||||
'handlers': ['console'],
|
||||
},
|
||||
'django.db.backends': {
|
||||
'handlers': ['console', ],
|
||||
'level': 'DEBUG',
|
||||
'propagate': False,
|
||||
},
|
||||
# 'django.db.backends': {
|
||||
# 'handlers': ['console', ],
|
||||
# 'level': 'DEBUG',
|
||||
# 'propagate': False,
|
||||
# },
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user