@@ -159,57 +159,41 @@ def get_entity_server_classes(self, entity):
159
159
entity_datamaps [datamap .class_name ] = datamap
160
160
datamap = datamap .base
161
161
162
- # Find if there are ServerClasses that are not in the DataMaps
163
- difference = set (
164
- entity_server_classes ).difference (set (entity_datamaps ))
165
-
166
- # Find if there are ServerClasses that are also in the DataMaps
167
- intersection = set (
168
- entity_server_classes ).intersection (set (entity_datamaps ))
169
-
170
- # Take care of special cases
171
- if not intersection or (difference and intersection ):
172
-
173
- # Loop through all ServerClass names
174
- for class_name in entity_server_classes :
175
-
176
- # Has the current ServerClass name already been added?
177
- if class_name in self :
178
-
179
- # Add the instance to the classname's list
180
- self ._entity_server_classes [entity .classname ].append (
181
- self [class_name ])
182
-
183
- # No need to go further
184
- continue
185
-
186
- # Retrieve all objects for the ServerClass and
187
- # add it to the classname's list
188
- self ._entity_server_classes [
189
- entity .classname ].append (self ._get_server_class (
190
- class_name , entity_datamaps .get (class_name , {})))
191
-
192
- # Take care of normal cases
193
- if not (difference and intersection ):
194
-
195
- # Loop through all DataMap names
196
- for class_name in entity_datamaps :
197
-
198
- # Has the current DataMap name already been added?
199
- if class_name in self :
200
-
201
- # Add the instance to the classname's list
202
- self ._entity_server_classes [entity .classname ].append (
203
- self [class_name ])
204
-
205
- # No need to go further
206
- continue
162
+ # Find the differences
163
+ server_no_data = set (entity_server_classes ).difference (entity_datamaps )
164
+ data_no_server = set (entity_datamaps ).difference (entity_server_classes )
165
+
166
+ # Set the order for the classes to be stored/iterated
167
+ if not data_no_server :
168
+ order = entity_server_classes
169
+ elif not server_no_data :
170
+ order = entity_datamaps
171
+ else :
172
+ order = []
173
+ for class_name in list (entity_datamaps ):
174
+ if class_name in entity_server_classes :
175
+ index = entity_server_classes .index (class_name )
176
+ order .extend (entity_server_classes [:index + 1 ])
177
+ del entity_server_classes [:index + 1 ]
178
+ else :
179
+ order .append (class_name )
180
+ order .extend (entity_server_classes )
181
+
182
+ for class_name in order :
183
+ # Is the current class already known?
184
+ if class_name in self :
185
+ self ._entity_server_classes [entity .classname ].append (
186
+ self [class_name ]
187
+ )
188
+ continue
207
189
208
- # Retrieve all objects for the ServerClass and
209
- # add it to the classname's list
210
- self ._entity_server_classes [
211
- entity .classname ].append (self ._get_server_class (
212
- class_name , entity_datamaps [class_name ]))
190
+ # Add the class
191
+ self ._entity_server_classes [entity .classname ].append (
192
+ self ._get_server_class (
193
+ class_name = class_name ,
194
+ datamap = entity_datamaps .get (class_name , {}),
195
+ )
196
+ )
213
197
214
198
# Return the server classes
215
199
return self ._entity_server_classes [entity .classname ]
0 commit comments