diff --git a/inventory/models.py b/inventory/models.py index b31b9d5f..9616f067 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -1306,7 +1306,7 @@ class Dealer(models.Model, LocalizedNameMixin): ) arabic_name = models.CharField(max_length=255, verbose_name=_("Arabic Name")) name = models.CharField(max_length=255, verbose_name=_("English Name")) - phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator]) + phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator()]) address = models.CharField( max_length=200, blank=True, null=True, verbose_name=_("Address") ) @@ -1432,7 +1432,7 @@ class Staff(models.Model): last_name = models.CharField(max_length=255, verbose_name=_("Last Name")) arabic_name = models.CharField(max_length=255, verbose_name=_("Arabic Name")) - phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator]) + phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator()]) staff_type = models.CharField( choices=StaffTypes.choices, max_length=255, verbose_name=_("Staff Type") ) @@ -1826,7 +1826,7 @@ class Organization(models.Model, LocalizedNameMixin): ) vrn = models.CharField(max_length=15, verbose_name=_("VAT Registration Number")) email = models.EmailField(verbose_name=_("Email")) - phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator]) + phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator()]) address = models.CharField( max_length=200, blank=True, null=True, verbose_name=_("Address") ) @@ -1960,7 +1960,7 @@ class Representative(models.Model, LocalizedNameMixin): id_number = models.CharField( max_length=10, unique=True, verbose_name=_("ID Number") ) - phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator]) + phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator()]) email = models.EmailField(max_length=255, verbose_name=_("Email Address")) address = models.CharField( max_length=200, blank=True, null=True, verbose_name=_("Address") @@ -1980,7 +1980,7 @@ class Lead(models.Model): first_name = models.CharField(max_length=50, verbose_name=_("First Name")) last_name = models.CharField(max_length=50, verbose_name=_("Last Name")) email = models.EmailField(verbose_name=_("Email")) - phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator]) + phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator()]) address = models.CharField( max_length=200, blank=True, null=True, verbose_name=_("Address") ) @@ -2668,7 +2668,7 @@ class Vendor(models.Model, LocalizedNameMixin): arabic_name = models.CharField(max_length=255, verbose_name=_("Arabic Name")) name = models.CharField(max_length=255, verbose_name=_("English Name")) contact_person = models.CharField(max_length=100, verbose_name=_("Contact Person")) - phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator]) + phone_number = models.CharField(max_length=255, verbose_name=_("Phone Number"),validators=[SaudiPhoneNumberValidator()]) email = models.EmailField(max_length=255, verbose_name=_("Email Address")) address = models.CharField(max_length=200, verbose_name=_("Address")) logo = models.ImageField( diff --git a/inventory/validators.py b/inventory/validators.py index 68a95412..8d9b66eb 100644 --- a/inventory/validators.py +++ b/inventory/validators.py @@ -1,6 +1,6 @@ from django.core.validators import RegexValidator from django.utils.translation import gettext_lazy as _ - +import re class SaudiPhoneNumberValidator(RegexValidator): def __init__(self): @@ -8,3 +8,7 @@ class SaudiPhoneNumberValidator(RegexValidator): regex=r"^(\+9665|05)[0-9]{8}$", message=_("Enter a valid Saudi phone number (05XXXXXXXX or +9665XXXXXXXX)"), ) + def __call__(self, value): + # Remove any whitespace, dashes, or other separators + cleaned_value = re.sub(r'[\s\-\(\)\.]', '', str(value)) + super().__call__(cleaned_value) \ No newline at end of file