added RegexField

This commit is contained in:
Stephan Groß 2012-11-20 15:38:50 +01:00
parent 44e9749e36
commit 86484668f6
3 changed files with 40 additions and 0 deletions

View File

@ -141,6 +141,16 @@ A text representation, validates the text to be a valid e-mail address.
Corresponds to `django.db.models.fields.EmailField` Corresponds to `django.db.models.fields.EmailField`
## RegexField
A text representation, that validates the given value matches against a certain regular expression.
Uses Django's `django.core.validators.RegexValidator` for validation.
Corresponds to `django.forms.fields.RegexField`
**Signature:** `RegexField(regex, max_length=None, min_length=None)`
## DateField ## DateField
A date representation. A date representation.

View File

@ -7,6 +7,7 @@
## Master ## Master
* Support for `read_only_fields` on `ModelSerializer` classes. * Support for `read_only_fields` on `ModelSerializer` classes.
* Added `RegexField`.
## 2.1.2 ## 2.1.2

View File

@ -1,6 +1,7 @@
import copy import copy
import datetime import datetime
import inspect import inspect
import re
import warnings import warnings
from django.core import validators from django.core import validators
@ -768,6 +769,34 @@ class EmailField(CharField):
return result return result
class RegexField(CharField):
type_name = 'RegexField'
def __init__(self, regex, max_length=None, min_length=None, *args, **kwargs):
super(RegexField, self).__init__(max_length, min_length, *args, **kwargs)
self.regex = regex
def _get_regex(self):
return self._regex
def _set_regex(self, regex):
if isinstance(regex, basestring):
regex = re.compile(regex)
self._regex = regex
if hasattr(self, '_regex_validator') and self._regex_validator in self.validators:
self.validators.remove(self._regex_validator)
self._regex_validator = validators.RegexValidator(regex=regex)
self.validators.append(self._regex_validator)
regex = property(_get_regex, _set_regex)
def __deepcopy__(self, memo):
result = copy.copy(self)
memo[id(self)] = result
result.validators = self.validators[:]
return result
class DateField(WritableField): class DateField(WritableField):
type_name = 'DateField' type_name = 'DateField'