Browse Source

First implementation of regex string data field

Roland Haroutiounian 9 years ago
parent
commit
6ad872b7f7

+ 0
- 3
lodel/leapi/datahandlers/data_fields/pk.py View File

@@ -1,3 +0,0 @@
1
-# -*- coding: utf-8 -*-
2
-from .integer import EmDataField as IntegerDataField
3
-

+ 25
- 0
lodel/leapi/datahandlers/data_fields/regexchar.py View File

@@ -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)

Loading…
Cancel
Save