| 123456789101112131415161718192021222324252627282930 |
- import datetime
- from django import forms
- from . import fields
- class LimitedDateTimeField(forms.DateTimeField):
- default_error_messages = forms.DateTimeField.default_error_messages.copy()
- default_error_messages.update(fields.ERROR_MESSAGES)
- def __init__(self, upper_limit=None, lower_limit=None, input_formats=None, *args, **kwargs):
- self.upper_limit = upper_limit
- self.lower_limit = lower_limit
- if self.upper_limit and not (isinstance(self.upper_limit, (datetime.datetime, datetime.date)) or callable(self.upper_limit)):
- raise AttributeError
- if self.lower_limit and not (isinstance(self.lower_limit, (datetime.datetime, datetime.date)) or callable(self.lower_limit)):
- raise AttributeError
- super(LimitedDateTimeField, self).__init__(input_formats=None, *args, **kwargs)
- def clean(self, value):
- value = super(LimitedDateTimeField, self).clean(value)
- def error(message):
- raise forms.ValidationError(self.error_messages[message])
- fields.limit_date(value, self.lower_limit, self.upper_limit, error)
- return value
|