Source code for django_powerbank.core.validators

# coding=utf-8
from datetime import datetime

from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
from django.utils.deconstruct import deconstructible
from django.utils.translation import ugettext_lazy as _

validate_date_range = RegexValidator(r"\d{4}-\d{2}-\d{2} - \d{4}-\d{2}-\d{2}", _("Please provide a date range in format: YYYY-MM-DD - YYYY-MM-DD"))


[docs]class MsisdnValidator(RegexValidator): def __init__(self, code=None, inverse_match=None, flags=None): message = _("Please enter phone number starting with a plus sign '+', then a country code and then all else. A 10 to 15 digits. Eg. +48 123 456 789") super(MsisdnValidator, self).__init__(r"\+(\d){10,15}", message, code, inverse_match, flags) def __call__(self, value): value = value.replace(" ", "") return super(MsisdnValidator, self).__call__(value)
[docs]@deconstructible class MaxTodayDateValidator(object): message = _('Ensure this value is less than or equal to %(limit_value)s.') def __call__(self, value): limit_value = datetime.now().date() if value > limit_value: params = {'limit_value': limit_value, 'value': value} raise ValidationError(self.message, params=params) def __eq__(self, other): return isinstance(other, MaxTodayDateValidator)
[docs]@deconstructible class MaxCurrentYearValidator(object): message = _('Ensure this value is less than or equal to %(limit_value)s.') def __call__(self, value): limit_value = datetime.now().year if value > limit_value: params = {'limit_value': limit_value, 'value': value} raise ValidationError(self.message, params=params) def __eq__(self, other): return isinstance(other, MaxCurrentYearValidator)
[docs]@deconstructible class SmartUrlValidator(object): def __call__(self, value): if value.startswith("http://") or value.startswith("https://"): return value return "http://" + value def __eq__(self, other): return isinstance(other, SmartUrlValidator)