Browse Source

Changed the way of complete arguement is interpreted in fieldtypes() and fieldlist() method

Yann Weber 9 years ago
parent
commit
2b2e219549
5 changed files with 16 additions and 27 deletions
  1. 9
    4
      leapi/leclass.py
  2. 1
    1
      leapi/lefactory.py
  3. 4
    16
      leapi/test/test_leclass.py
  4. 1
    1
      leapi/test/test_lefactory.py
  5. 1
    5
      leapi/test/test_letype.py

+ 9
- 4
leapi/leclass.py View File

@@ -18,14 +18,19 @@ class _LeClass(_LeObject):
18 18
     _class_id = None
19 19
     ## @brief Stores the classtype
20 20
     _classtype = None
21
-
21
+        
22
+    ## @brief Return a dict with fieldname as key and a fieldtype instance as value
23
+    # @note not optimised at all
22 24
     @classmethod
23 25
     def fieldtypes(cls, complete=True):
24
-        ret = dict()
25 26
         if complete:
27
+            ret = dict()
26 28
             ret.update(super().fieldtypes())
27
-        ret.update(cls._fieldtypes)
28
-        return ret
29
+            ret.update(cls._fieldtypes)
30
+            return ret
31
+        else:
32
+            leobject = cls.name2class('LeObject')
33
+            return { fname: cls._fieldtypes[fname] for fname in cls._fieldtypes if fname not in leobject.fieldtypes().keys() }
29 34
 
30 35
     @classmethod
31 36
     def fieldlist(cls, complete=True):

+ 1
- 1
leapi/lefactory.py View File

@@ -149,7 +149,7 @@ class {classname}(LeRel2Type):
149 149
         type_fields = list()
150 150
         type_superiors = list()
151 151
         for field in emtype.fields(relational=False):
152
-            if not hasattr(field, 'immutable') or not field.immutable:
152
+            if not field.name in EditorialModel.classtypes.common_fields:
153 153
                 type_fields.append(field.name)
154 154
 
155 155
         for nat, sup_l in emtype.superiors().items():

+ 4
- 16
leapi/test/test_leclass.py View File

@@ -28,22 +28,10 @@ class LeClassTestCase(TestCase):
28 28
         for leclass in [ Publication, Personnes, Textes ]:
29 29
             for fieldname in leclass.fieldlist(complete = False):
30 30
                 ftype = leclass.fieldtypes()[fieldname]
31
-                if hasattr(ftype, 'immutable'):
32
-                    if ftype.immutable:
33
-                        self.assertNotIn(
34
-                            fieldname,
35
-                            LeObject.fieldlist()
36
-                        )
37
-                    else:
38
-                        self.assertIn(
39
-                            fieldname,
40
-                            LeObject.fieldlist()
41
-                        )
42
-                else:
43
-                    self.assertNotIn(
44
-                        fieldname,
45
-                        LeObject.fieldlist()
46
-                    )
31
+                self.assertNotIn(
32
+                    fieldname,
33
+                    LeObject.fieldlist()
34
+                )
47 35
             for obj_fname in LeObject.fieldlist():
48 36
                 self.assertIn(
49 37
                     obj_fname,

+ 1
- 1
leapi/test/test_lefactory.py View File

@@ -104,7 +104,7 @@ class TestLeFactory(TestCase):
104 104
             )
105 105
 
106 106
             #Testing _fields
107
-            expected_fields = [ f for f in emtype.fields(relational=False) if not(hasattr(f, 'immutable') and f.immutable) ]
107
+            expected_fields = [ f for f in emtype.fields(relational=False) if f.name not in EditorialModel.classtypes.common_fields.keys() ]
108 108
             self.assertEqual(
109 109
                 set([ f.name for f in expected_fields ]),
110 110
                 set([ f for f in letype._fields])

+ 1
- 5
leapi/test/test_letype.py View File

@@ -72,11 +72,7 @@ class LeTypeTestCase(TestCase):
72 72
             for fname in letype.fieldlist(complete = False):
73 73
                 self.assertIn(fname, letype._leclass.fieldlist(False))
74 74
                 ftype = letype.fieldtypes()[fname]
75
-                if hasattr(ftype, 'immutable'):
76
-                    if ftype.immutable:
77
-                        self.assertNotIn(fname, LeObject.fieldlist())
78
-                    else:
79
-                        self.assertIn(fname, LeObject.fieldlist())
75
+                self.assertNotIn(fname, LeObject.fieldlist())
80 76
 
81 77
     def test_fieldtypes(self):
82 78
         """ Test fieldtypes() method """

Loading…
Cancel
Save