Merge branch 'feature/establishment-status-bar' into 'develop'
must_of_the_week behaviour for update. public_mark has been returned See merge request gm/gm-backend!271
This commit is contained in:
commit
2832c1696f
|
|
@ -232,6 +232,8 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
|||
|
||||
last_review = ReviewBaseSerializer(read_only=True)
|
||||
|
||||
must_of_the_week = serializers.BooleanField(required=False, )
|
||||
|
||||
class Meta(model_serializers.EstablishmentBaseSerializer.Meta):
|
||||
fields = [
|
||||
'id',
|
||||
|
|
@ -264,6 +266,7 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
|||
'must_of_the_week',
|
||||
'last_update_by_gm',
|
||||
'last_update_by_manager',
|
||||
'public_mark',
|
||||
]
|
||||
|
||||
def to_representation(self, instance):
|
||||
|
|
|
|||
18
apps/review/migrations/0021_review_visited_at.py
Normal file
18
apps/review/migrations/0021_review_visited_at.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.2.7 on 2020-02-10 08:46
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('review', '0020_reviewtextauthor'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='review',
|
||||
name='visited_at',
|
||||
field=models.DateField(blank=True, null=True),
|
||||
),
|
||||
]
|
||||
|
|
@ -94,6 +94,7 @@ class Review(BaseAttributes, TranslatedFieldsMixin):
|
|||
mark = models.FloatField(verbose_name=_('mark'), blank=True, null=True, default=None)
|
||||
priority = models.PositiveSmallIntegerField(_('Priority'), blank=True, null=True, default=None)
|
||||
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
|
||||
visited_at = models.DateField(blank=True, null=True)
|
||||
|
||||
objects = ReviewQuerySet.as_manager()
|
||||
|
||||
|
|
@ -101,6 +102,17 @@ class Review(BaseAttributes, TranslatedFieldsMixin):
|
|||
def status_display(self):
|
||||
return self.REVIEW_STATUSES[self.status][1]
|
||||
|
||||
@property
|
||||
def visited_on(self):
|
||||
from account.models import User
|
||||
|
||||
if isinstance(self.reviewer, User):
|
||||
return {
|
||||
'user': self.reviewer,
|
||||
'date': self.visited_at,
|
||||
}
|
||||
return None
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
verbose_name = _('Review')
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ class ReviewBaseSerializer(serializers.ModelSerializer):
|
|||
'country',
|
||||
'content_type',
|
||||
'object_id',
|
||||
'visited_on',
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -542,22 +542,42 @@ class AwardsModelMixin:
|
|||
|
||||
|
||||
class CarouselMixin:
|
||||
def __must_of_the_week_info_from_self(self) -> dict:
|
||||
from main.models import Country
|
||||
|
||||
return {
|
||||
'content_type': ContentType.objects.get_for_model(self),
|
||||
'object_id': getattr(self, 'pk'),
|
||||
'country': getattr(self, 'country', get_object_or_404(Country, id=getattr(self, 'country_id', 0))),
|
||||
}
|
||||
|
||||
def __must_of_the_week_has_fields(self) -> bool:
|
||||
return hasattr(self, 'pk') and (hasattr(self, 'country') or hasattr(self, 'country_id'))
|
||||
|
||||
@property
|
||||
def must_of_the_week(self) -> bool:
|
||||
from main import models as main_models
|
||||
|
||||
"""Detects whether current item in carousel"""
|
||||
from main.models import Carousel
|
||||
|
||||
if hasattr(self, 'pk') and (hasattr(self, 'country') or hasattr(self, 'country_id')):
|
||||
kwargs = {
|
||||
'content_type': ContentType.objects.get_for_model(self),
|
||||
'object_id': self.pk,
|
||||
'country': getattr(self, 'country', getattr(self, 'country_id', None)),
|
||||
}
|
||||
|
||||
return Carousel.objects.filter(**kwargs).exists()
|
||||
if self.__must_of_the_week_has_fields():
|
||||
kwargs = self.__must_of_the_week_info_from_self()
|
||||
return main_models.Carousel.objects.filter(**kwargs).exists()
|
||||
|
||||
return False
|
||||
|
||||
@must_of_the_week.setter
|
||||
def must_of_the_week(self, status: bool):
|
||||
from main import models as main_models
|
||||
|
||||
"""Update field by status"""
|
||||
if status != self.must_of_the_week and self.__must_of_the_week_has_fields():
|
||||
carousel, _ = main_models.Carousel.objects.get_or_create(
|
||||
**self.__must_of_the_week_info_from_self()
|
||||
)
|
||||
|
||||
if not status and isinstance(carousel, main_models.Carousel):
|
||||
carousel.delete()
|
||||
|
||||
|
||||
class UpdateByMixin(models.Model):
|
||||
"""Modify by mixin"""
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user