Browse Source

first shoot for fieldtypes

ArnAud 9 years ago
parent
commit
d217eb89cc
2 changed files with 92 additions and 5 deletions
  1. 3
    3
      EditorialModel/fields.py
  2. 89
    2
      EditorialModel/fieldtypes.py

+ 3
- 3
EditorialModel/fields.py View File

@@ -48,7 +48,7 @@ class EmField(EmComponent):
48 48
                 'uid' : uid,
49 49
                 'name' : name,
50 50
                 'fieldgroup_id' : em_fieldgroup.id,
51
-                'fieldtype_id' : em_fieldtype.id,
51
+                'fieldtype' : em_fieldtype.name,
52 52
                 'optional' : 1 if optional else 0,
53 53
                 'internal' : 1 if internal else 0,
54 54
             }
@@ -64,7 +64,7 @@ class EmField(EmComponent):
64 64
     def populate(self):
65 65
         row = super(EmField, self).populate()
66 66
         self.em_fieldgroup = EditorialModel.fieldgroups.EmFieldGroup(int(row.fieldgroup_id))
67
-        self.em_fieldtype = EditorialModel.fieldtypes.EmFieldType(int(row.fieldtype_id))
67
+        self.em_fieldtype = EditorialModel.fieldtypes.get_field_type(row.fieldtype)
68 68
         self.optional = True if row.optional == 1 else False;
69 69
         self.internal = True if row.internal == 1 else False;
70 70
         self.icon = row.icon
@@ -78,7 +78,7 @@ class EmField(EmComponent):
78 78
 
79 79
         values = {
80 80
             'fieldgroup_id' : self.em_fieldgroup.id,
81
-            'fieldtype_id' : self.em_fieldtype.id,
81
+            'fieldtype' : self.em_fieldtype.name,
82 82
             'optional' : 1 if self.optional else 0,
83 83
             'internal' : 1 if self.internal else 0,
84 84
             'icon' : self.icon,

+ 89
- 2
EditorialModel/fieldtypes.py View File

@@ -1,8 +1,95 @@
1 1
 #-*- coding: utf-8 -*-
2 2
 
3 3
 from EditorialModel.components import EmComponent, EmComponentNotExistError
4
+from Lodel.utils.mlstring import MlString
5
+
6
+def get_field_type(name):
7
+    class_name = 'EmField_' + name
8
+    constructor = globals()[class_name]
9
+    instance = constructor()
10
+    return instance
4 11
 
5 12
 class EmFieldType():
6 13
 
7
-    def __init__(self, id):
8
-        self.id = id
14
+    def __init__(self, name):
15
+        self.name = name
16
+
17
+
18
+class EmField_integer(EmFieldType):
19
+
20
+    def __init__(self):
21
+        super(EmField_integer, self).__init__('integer')
22
+
23
+    def to_python(self, value):
24
+        if value == '':
25
+            self.value = 0
26
+        else:
27
+            self.value = int(value)
28
+
29
+    def to_sql(self, value = None):
30
+        if value is None:
31
+            value = self.value
32
+        return str(value)
33
+
34
+    def sql_column(self):
35
+        return "int(11) NOT NULL"
36
+
37
+
38
+class EmField_boolean(EmFieldType):
39
+
40
+    def __init__(self):
41
+        super(EmField_boolean, self).__init__('boolean')
42
+
43
+    def to_python(self, value):
44
+        if value:
45
+            self.value = True
46
+        else:
47
+            self.value = False
48
+        return self.value
49
+
50
+    def to_sql(self, value = None):
51
+        if value is None:
52
+            value = self.value
53
+        return 1 if value else 0
54
+
55
+    def sql_column(self):
56
+        return "tinyint(1) DEFAULT NULL"
57
+
58
+
59
+class EmField_char(EmFieldType):
60
+
61
+    def __init__(self):
62
+        super(EmField_char, self).__init__('char')
63
+
64
+    def to_python(self, value):
65
+        if value:
66
+            self.value = value
67
+        else:
68
+            self.value = ''
69
+        return self.value
70
+
71
+    def to_sql(self, value = None):
72
+        if value is None:
73
+            value = self.value
74
+        return value
75
+
76
+    def sql_column(self):
77
+        return "varchar(250) DEFAULT NULL"
78
+
79
+
80
+class EmField_mlstring(EmFieldType):
81
+
82
+    def __init__(self):
83
+        super(EmField_mlstring, self).__init__('mlstring')
84
+
85
+    def to_python(self, value):
86
+        self.value = MlString.load(value)
87
+        return self.value
88
+
89
+    def to_sql(self, value = None):
90
+        if value is None:
91
+            value = self.value
92
+        return str(value)
93
+
94
+    def sql_column(self):
95
+        return "varchar(250) DEFAULT NULL"

Loading…
Cancel
Save