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."""
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 phonenumber_field.modelfields import PhoneNumberField
from comment import models as comment_models
from comment.serializers import common as comment_serializers
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 review.serializers import ReviewShortSerializer
from tag.serializers import TagBaseSerializer
from timetable.serialziers import ScheduleRUDSerializer
from utils import exceptions as utils_exceptions
from utils.serializers import ImageBaseSerializer
from utils.serializers import (ProjectModelSerializer, TranslatedField,
FavoritesCreateSerializer)
from review.serializers import ReviewShortSerializer
from utils.serializers import ImageBaseSerializer
class ContactPhonesSerializer(serializers.ModelSerializer):
@ -453,7 +454,23 @@ class CompanyBaseSerializer(serializers.ModelSerializer):
}
def get_phone_list(self, instance):
"""Return list of phone numbers."""
return instance.phones
def get_fax_list(self, instance):
"""Return list of fax numbers."""
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