last update by for establishment
This commit is contained in:
parent
5b6db0f974
commit
f854cd6ba5
|
|
@ -33,7 +33,7 @@ from utils.models import (
|
|||
BaseAttributes, FavoritesMixin, FileMixin, GalleryMixin, HasTagsMixin,
|
||||
IntermediateGalleryModelMixin, ProjectBaseMixin, TJSONField, TranslatedFieldsMixin,
|
||||
TypeDefaultImageMixin, URLImageMixin, default_menu_bool_array, PhoneModelMixin,
|
||||
AwardsModelMixin, CarouselMixin)
|
||||
AwardsModelMixin, CarouselMixin, UpdateByMixin)
|
||||
|
||||
|
||||
# todo: establishment type&subtypes check
|
||||
|
|
@ -554,7 +554,8 @@ class Establishment(GalleryMixin,
|
|||
HasTagsMixin,
|
||||
FavoritesMixin,
|
||||
AwardsModelMixin,
|
||||
CarouselMixin):
|
||||
CarouselMixin,
|
||||
UpdateByMixin):
|
||||
"""Establishment model."""
|
||||
|
||||
ABANDONED = 0
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
from datetime import datetime
|
||||
from functools import lru_cache
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
|
@ -9,6 +10,7 @@ from rest_framework import serializers
|
|||
from slugify import slugify
|
||||
|
||||
from account import models as account_models
|
||||
from account.models import Role
|
||||
from account.serializers.common import UserShortSerializer
|
||||
from collection.models import Guide
|
||||
from establishment import models, serializers as model_serializers
|
||||
|
|
@ -20,7 +22,7 @@ from location.serializers import AddressDetailSerializer, TranslatedField, Addre
|
|||
from main import models as main_models
|
||||
from main.models import Currency
|
||||
from main.serializers import AwardSerializer
|
||||
from review.serializers import ReviewBaseSerializer
|
||||
from review.serializers import ReviewBaseSerializer, User
|
||||
from tag.serializers import TagBaseSerializer
|
||||
from utils.decorators import with_base_attributes
|
||||
from utils.methods import string_random
|
||||
|
|
@ -224,7 +226,7 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
|||
|
||||
contact_phones = ContactPhonesSerializer(source='phones', read_only=True, many=True)
|
||||
|
||||
last_review = ReviewBaseSerializer()
|
||||
last_review = ReviewBaseSerializer(read_only=True)
|
||||
|
||||
class Meta(model_serializers.EstablishmentBaseSerializer.Meta):
|
||||
fields = [
|
||||
|
|
@ -256,6 +258,8 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
|||
'status_display',
|
||||
'last_review',
|
||||
'must_of_the_week',
|
||||
'last_update_by_gm',
|
||||
'last_update_by_manager',
|
||||
]
|
||||
|
||||
def to_representation(self, instance):
|
||||
|
|
@ -263,7 +267,7 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
|||
data['phones'] = data.pop('contact_phones', None)
|
||||
return data
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
def update(self, instance: models.Establishment, validated_data):
|
||||
phones_list = []
|
||||
if 'contact_phones' in validated_data:
|
||||
phones_list = validated_data.pop('contact_phones')
|
||||
|
|
@ -272,9 +276,30 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
|||
if 'contact_emails' in validated_data:
|
||||
emails_list = validated_data.pop('contact_emails')
|
||||
|
||||
request = self.context.get('request')
|
||||
if request and hasattr(request, 'user'):
|
||||
user = request.user
|
||||
|
||||
if isinstance(user, User):
|
||||
is_by_manager = user.userrole_set.filter(
|
||||
pk=user.pk,
|
||||
role__in=(
|
||||
Role.ESTABLISHMENT_MANAGER,
|
||||
Role.ESTABLISHMENT_ADMINISTRATOR,
|
||||
Role.COUNTRY_ADMIN
|
||||
)
|
||||
).exists()
|
||||
|
||||
if is_by_manager:
|
||||
instance.last_update_by_manager = datetime.now()
|
||||
else:
|
||||
''' by gm. '''
|
||||
instance.last_update_by_gm = datetime.now()
|
||||
|
||||
instance = super().update(instance, validated_data)
|
||||
phones_handler(phones_list, instance)
|
||||
emails_handler(emails_list, instance)
|
||||
|
||||
return instance
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -557,3 +557,14 @@ class CarouselMixin:
|
|||
return Carousel.objects.filter(**kwargs).exists()
|
||||
|
||||
return False
|
||||
|
||||
|
||||
class UpdateByMixin(models.Model):
|
||||
"""Modify by mixin"""
|
||||
last_update_by_manager = models.DateTimeField(null=True)
|
||||
|
||||
last_update_by_gm = models.DateTimeField(null=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
abstract = True
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user