|
@@ -0,0 +1,25 @@
|
|
1
|
+# -*- coding: utf-8 -*-
|
|
2
|
+import re
|
|
3
|
+from .varchar import EmDataField as VarcharDataField
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+class EmDataField(VarcharDataField):
|
|
7
|
+
|
|
8
|
+ help = 'String field validated with a regex. Takes two options : max_length and regex'
|
|
9
|
+
|
|
10
|
+ ## @brief A string field validated by a regex
|
|
11
|
+ # @param regex str : a regex string (passed as argument to re.compile())
|
|
12
|
+ # @param max_length int : the max length for this field (default : 10)
|
|
13
|
+ # @param **kwargs
|
|
14
|
+ def __init__(self, regex='', max_length=10, **kwargs):
|
|
15
|
+ self.regex = regex
|
|
16
|
+ self.compiled_re = re.compile(regex) # trigger an error if invalid regex
|
|
17
|
+
|
|
18
|
+ super().__init__(max_length=max_length, **kwargs)
|
|
19
|
+
|
|
20
|
+ def _check_data_value(self, value):
|
|
21
|
+ error = None
|
|
22
|
+ if not self.compiled_re.match(value):
|
|
23
|
+ value = ''
|
|
24
|
+ error = TypeError('"%s" doesn\'t match the regex "%s"' % (value, self.regex))
|
|
25
|
+ return (value, error)
|