Browse Source

Added can_override method to the data_handler types

Roland Haroutiounian 9 years ago
parent
commit
9b237fbe2e

+ 8
- 1
lodel/leapi/datahandlers/data_fields/bool.py View File

@@ -5,7 +5,7 @@ from ..data_field import DataField
5 5
 class DataHandler(DataField):
6 6
 
7 7
     help = 'A basic boolean field'
8
-    ftype = 'bool'
8
+    base_type = 'bool'
9 9
 
10 10
     ## @brief A boolean field
11 11
     def __init__(self, **kwargs):
@@ -20,3 +20,10 @@ class DataHandler(DataField):
20 20
         except(ValueError, TypeError):
21 21
             error = TypeError("The value '%s' is not, and will never, be a boolean" % value)
22 22
         return (value, error)
23
+
24
+    def can_override(self, data_handler):
25
+
26
+        if data_handler.__class__.base_type != self.__class__.base_type:
27
+            return False
28
+
29
+        return True

+ 8
- 0
lodel/leapi/datahandlers/data_fields/datetime.py View File

@@ -5,6 +5,7 @@ from ..data_field import DataField
5 5
 class DataHandler(DataField):
6 6
 
7 7
     help = 'A datetime field. Take two boolean options now_on_update and now_on_create'
8
+    base_type = 'datetime'
8 9
 
9 10
     ## @brief A datetime field
10 11
     # @param now_on_update bool : If true, the date is set to NOW on update
@@ -14,3 +15,10 @@ class DataHandler(DataField):
14 15
         self.now_on_update = now_on_update
15 16
         self.now_on_create = now_on_create
16 17
         super().__init__(**kwargs)
18
+
19
+    def can_override(self, data_handler):
20
+
21
+        if data_handler.__class__.base_type != self.__class__.base_type:
22
+            return False
23
+
24
+        return True

+ 7
- 0
lodel/leapi/datahandlers/data_fields/file.py View File

@@ -4,9 +4,16 @@ from ..data_field import DataField
4 4
 
5 5
 class DataHandler(DataField):
6 6
 
7
+    base_type = 'file'
8
+
7 9
     ## @brief a file field
8 10
     # @param upload_path str : None by default
9 11
     # @param **kwargs
10 12
     def __init__(self, upload_path=None, **kwargs):
11 13
         self.upload_path = upload_path
12 14
         super().__init__(ftype='file', **kwargs)
15
+
16
+    def can_override(self, data_handler):
17
+        if data_handler.__class__.base_type != self.__class__.base_type:
18
+            return False
19
+        return True

+ 9
- 0
lodel/leapi/datahandlers/data_fields/format.py View File

@@ -6,6 +6,7 @@ from .varchar import EmDataField as VarcharDataField
6 6
 class DataHandler(VarcharDataField):
7 7
 
8 8
     help = 'Automatic string field, designed to use the str % operator to build its content'
9
+    base_type = 'char'
9 10
 
10 11
     ## @brief Build its content with a field list and a format string
11 12
     # @param format_string str
@@ -16,3 +17,11 @@ class DataHandler(VarcharDataField):
16 17
         self._field_list = field_list
17 18
         self._format_string = format_string
18 19
         super().__init__(internal='automatic', max_length=max_length)
20
+
21
+    def can_override(self, data_handler):
22
+        if data_handler.__class__.base_type != self.__class__.base_type:
23
+            return False
24
+        if data_handler.max_length != self.max_length:
25
+            return False
26
+
27
+        return True

+ 9
- 4
lodel/leapi/datahandlers/data_fields/integer.py View File

@@ -1,14 +1,14 @@
1 1
 # -*- coding: utf-8 -*-
2
-from ..data_field import DataField
2
+from ..data_field import FieldDataHandler
3 3
 
4 4
 
5
-class DataHandler(DataField):
5
+class DataHandler(FieldDataHandler):
6 6
 
7 7
     help = 'Basic integer field'
8
-    ftype = 'int'
8
+    base_type = 'int'
9 9
 
10 10
     def __init__(self, **kwargs):
11
-        super().__init__(ftype='int', **kwargs)
11
+        super().__init__(base_type='int', **kwargs)
12 12
 
13 13
     def _check_data_value(self, value):
14 14
         error = None
@@ -17,3 +17,8 @@ class DataHandler(DataField):
17 17
         except(ValueError, TypeError):
18 18
             error = TypeError("The value '%s' is not, and will never, be an integer" % value)
19 19
         return (value, error)
20
+
21
+    def can_override(self, data_handler):
22
+        if data_handler.__class__.base_type != self.__class__.base_type:
23
+            return False
24
+        return True

+ 8
- 0
lodel/leapi/datahandlers/data_fields/regexvarchar.py View File

@@ -6,6 +6,7 @@ from .varchar import EmDataField as VarcharDataField
6 6
 class DataHandler(VarcharDataField):
7 7
 
8 8
     help = 'String field validated with a regex. Takes two options : max_length and regex'
9
+    base_type = 'char'
9 10
 
10 11
     ## @brief A string field validated by a regex
11 12
     # @param regex str : a regex string (passed as argument to re.compile())
@@ -23,3 +24,10 @@ class DataHandler(VarcharDataField):
23 24
             value = ''
24 25
             error = TypeError('"%s" doesn\'t match the regex "%s"' % (value, self.regex))
25 26
         return (value, error)
27
+
28
+    def can_override(self, data_handler):
29
+        if data_handler.__class__.base_type != self.__class__.base_type:
30
+            return False
31
+        if data_handler.max_length != self.max_length:
32
+            return False
33
+        return True

+ 8
- 1
lodel/leapi/datahandlers/data_fields/text.py View File

@@ -12,4 +12,11 @@ class DataHandler(DataField):
12 12
     def can_override(self, data_handler):
13 13
         if data_handler.__class__.base_type != self.__class__.base_type:
14 14
             return False
15
-        return True
15
+        return True
16
+
17
+    def can_override(self, data_handler):
18
+
19
+        if data_handler.__class__.base_type != self.__class__.base_type:
20
+            return False
21
+
22
+        return True

Loading…
Cancel
Save