diff --git a/apps/establishment/serializers/common.py b/apps/establishment/serializers/common.py index e4cb389a..9acc2f9e 100644 --- a/apps/establishment/serializers/common.py +++ b/apps/establishment/serializers/common.py @@ -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