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,
|
BaseAttributes, FavoritesMixin, FileMixin, GalleryMixin, HasTagsMixin,
|
||||||
IntermediateGalleryModelMixin, ProjectBaseMixin, TJSONField, TranslatedFieldsMixin,
|
IntermediateGalleryModelMixin, ProjectBaseMixin, TJSONField, TranslatedFieldsMixin,
|
||||||
TypeDefaultImageMixin, URLImageMixin, default_menu_bool_array, PhoneModelMixin,
|
TypeDefaultImageMixin, URLImageMixin, default_menu_bool_array, PhoneModelMixin,
|
||||||
AwardsModelMixin, CarouselMixin)
|
AwardsModelMixin, CarouselMixin, UpdateByMixin)
|
||||||
|
|
||||||
|
|
||||||
# todo: establishment type&subtypes check
|
# todo: establishment type&subtypes check
|
||||||
|
|
@ -554,7 +554,8 @@ class Establishment(GalleryMixin,
|
||||||
HasTagsMixin,
|
HasTagsMixin,
|
||||||
FavoritesMixin,
|
FavoritesMixin,
|
||||||
AwardsModelMixin,
|
AwardsModelMixin,
|
||||||
CarouselMixin):
|
CarouselMixin,
|
||||||
|
UpdateByMixin):
|
||||||
"""Establishment model."""
|
"""Establishment model."""
|
||||||
|
|
||||||
ABANDONED = 0
|
ABANDONED = 0
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
from datetime import datetime
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
|
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
|
@ -9,6 +10,7 @@ from rest_framework import serializers
|
||||||
from slugify import slugify
|
from slugify import slugify
|
||||||
|
|
||||||
from account import models as account_models
|
from account import models as account_models
|
||||||
|
from account.models import Role
|
||||||
from account.serializers.common import UserShortSerializer
|
from account.serializers.common import UserShortSerializer
|
||||||
from collection.models import Guide
|
from collection.models import Guide
|
||||||
from establishment import models, serializers as model_serializers
|
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 import models as main_models
|
||||||
from main.models import Currency
|
from main.models import Currency
|
||||||
from main.serializers import AwardSerializer
|
from main.serializers import AwardSerializer
|
||||||
from review.serializers import ReviewBaseSerializer
|
from review.serializers import ReviewBaseSerializer, User
|
||||||
from tag.serializers import TagBaseSerializer
|
from tag.serializers import TagBaseSerializer
|
||||||
from utils.decorators import with_base_attributes
|
from utils.decorators import with_base_attributes
|
||||||
from utils.methods import string_random
|
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)
|
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):
|
class Meta(model_serializers.EstablishmentBaseSerializer.Meta):
|
||||||
fields = [
|
fields = [
|
||||||
|
|
@ -256,6 +258,8 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
||||||
'status_display',
|
'status_display',
|
||||||
'last_review',
|
'last_review',
|
||||||
'must_of_the_week',
|
'must_of_the_week',
|
||||||
|
'last_update_by_gm',
|
||||||
|
'last_update_by_manager',
|
||||||
]
|
]
|
||||||
|
|
||||||
def to_representation(self, instance):
|
def to_representation(self, instance):
|
||||||
|
|
@ -263,7 +267,7 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
||||||
data['phones'] = data.pop('contact_phones', None)
|
data['phones'] = data.pop('contact_phones', None)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance: models.Establishment, validated_data):
|
||||||
phones_list = []
|
phones_list = []
|
||||||
if 'contact_phones' in validated_data:
|
if 'contact_phones' in validated_data:
|
||||||
phones_list = validated_data.pop('contact_phones')
|
phones_list = validated_data.pop('contact_phones')
|
||||||
|
|
@ -272,9 +276,30 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
||||||
if 'contact_emails' in validated_data:
|
if 'contact_emails' in validated_data:
|
||||||
emails_list = validated_data.pop('contact_emails')
|
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)
|
instance = super().update(instance, validated_data)
|
||||||
phones_handler(phones_list, instance)
|
phones_handler(phones_list, instance)
|
||||||
emails_handler(emails_list, instance)
|
emails_handler(emails_list, instance)
|
||||||
|
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -557,3 +557,14 @@ class CarouselMixin:
|
||||||
return Carousel.objects.filter(**kwargs).exists()
|
return Carousel.objects.filter(**kwargs).exists()
|
||||||
|
|
||||||
return False
|
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