added validation to Company serializer

This commit is contained in:
Anatoly 2019-11-18 17:57:28 +03:00
parent 0d9d45bcc5
commit 012d2dcb23

View File

@ -1,20 +1,21 @@
"""Establishment serializers.""" """Establishment serializers."""
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from phonenumber_field.phonenumber import to_python as str_to_phonenumber
from rest_framework import serializers from rest_framework import serializers
from phonenumber_field.modelfields import PhoneNumberField
from comment import models as comment_models from comment import models as comment_models
from comment.serializers import common as comment_serializers from comment.serializers import common as comment_serializers
from establishment import models from establishment import models
from location.serializers import AddressBaseSerializer, CitySerializer, AddressDetailSerializer, CityShortSerializer from location.serializers import AddressBaseSerializer, CitySerializer, AddressDetailSerializer, \
CityShortSerializer
from main.serializers import AwardSerializer, CurrencySerializer from main.serializers import AwardSerializer, CurrencySerializer
from review.serializers import ReviewShortSerializer
from tag.serializers import TagBaseSerializer from tag.serializers import TagBaseSerializer
from timetable.serialziers import ScheduleRUDSerializer from timetable.serialziers import ScheduleRUDSerializer
from utils import exceptions as utils_exceptions from utils import exceptions as utils_exceptions
from utils.serializers import ImageBaseSerializer
from utils.serializers import (ProjectModelSerializer, TranslatedField, from utils.serializers import (ProjectModelSerializer, TranslatedField,
FavoritesCreateSerializer) FavoritesCreateSerializer)
from review.serializers import ReviewShortSerializer
from utils.serializers import ImageBaseSerializer
class ContactPhonesSerializer(serializers.ModelSerializer): class ContactPhonesSerializer(serializers.ModelSerializer):
@ -453,7 +454,23 @@ class CompanyBaseSerializer(serializers.ModelSerializer):
} }
def get_phone_list(self, instance): def get_phone_list(self, instance):
"""Return list of phone numbers."""
return instance.phones return instance.phones
def get_fax_list(self, instance): def get_fax_list(self, instance):
"""Return list of fax numbers."""
return instance.faxes return instance.faxes
def validate(self, attrs):
"""Overridden validate method"""
phones = [str_to_phonenumber(phone).as_national for phone in attrs.get('phones')]
faxes = [str_to_phonenumber(fax).as_national for fax in attrs.get('faxes')]
if faxes:
if models.Company.objects.filter(faxes__overlap=faxes).exists():
raise serializers.ValidationError({'detail': _('Fax is already reserved.')})
if phones:
if models.Company.objects.filter(phones__overlap=phones).exists():
raise serializers.ValidationError({'detail': _('Phones is already reserved.')})
return attrs