Continuing bug fixes
[plstackapi.git] / planetstack / apigen / modelgen
index c36048e..ef2730b 100755 (executable)
@@ -74,21 +74,31 @@ class Generator(dict):
 
        def compute_links(self):
                for obj in self.values():
-                       #if (str(obj)=='siteprivilege'):
+                       #if (str(obj)=='network'):
                        #       pdb.set_trace()
                        fields = obj.model._meta.fields
                        for f in fields:
-                               if type(f)==ForeignKey and f.name in self.keys():
-                                       refobj = self[f.name]
-                                       obj.refs.append(refobj)
+                               if (f and f.rel):
+                                       to_name = str(f.rel.to)
+                               else:
+                                       to_name = None
+
+                               if type(f)==ForeignKey and to_name and to_name in self.keys():
+                                       refobj = self[f.to_name]
+
+                                       if (str(obj)=='slice' and f.to_name=='networks'):
+                                               obj.refs.append(refobj)
                                        related_name = f.related_query_name()
-                                       if (related_name.lower()!=str(obj).lower()):
+                                       if (related_name!='+' and related_name.lower()!=str(obj).lower()):
                                                cobj = copy.deepcopy(obj)
                                                cobj.multi = True
                                                cobj.plural_name = related_name
+                                               #if (str(refobj)=='slice' and related_name=='networks'):
+                                               #       pdb.set_trace()
                                                refobj.refs.append(cobj)
                                else:
                                        obj.props.append(f.name)
+
                        m2m = obj.model._meta.many_to_many
                        for f in m2m:
                                try:
@@ -96,6 +106,7 @@ class Generator(dict):
                                except:
                                        related_model_name = f.m2m_db_table().rsplit('_',1)[-1]
 
+                               related_name = f.related_query_name()
                                if related_model_name in self.keys():
                        #               pdb.set_trace()
                                        refobj = self[related_model_name]
@@ -103,12 +114,19 @@ class Generator(dict):
                                        cobj.multi=True
                                        refobj.refs.append(cobj)
                                
-                               if (related_name.lower()!=str(obj).lower()):
+                               if (related_name!='+' and related_name.lower()!=str(obj).lower()):
                                        cobj = copy.deepcopy(obj)
                                        cobj.multi = True
                                        cobj.plural_name = related_name
+
+                                       #if (str(refobj)=='slice' and related_name=='networks'):
+                                       #       pdb.set_trace()
                                        refobj.refs.append(cobj)
 
+                                       #if (related_name=='networks'):
+                                               #pdb.set_trace()
+                                               #print str(refobj)
+