commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r5935 - trunk/gnue-appserver/src/gcd


From: johannes
Subject: r5935 - trunk/gnue-appserver/src/gcd
Date: Wed, 7 Jul 2004 17:14:15 -0500 (CDT)

Author: johannes
Date: 2004-07-04 11:54:32 -0500 (Sun, 04 Jul 2004)
New Revision: 5935

Modified:
   trunk/gnue-appserver/src/gcd/gcd2sql.py
Log:
Fixed (module-)key-error on extending classes


Modified: trunk/gnue-appserver/src/gcd/gcd2sql.py
===================================================================
--- trunk/gnue-appserver/src/gcd/gcd2sql.py     2004-07-02 16:08:12 UTC (rev 
5934)
+++ trunk/gnue-appserver/src/gcd/gcd2sql.py     2004-07-04 16:54:32 UTC (rev 
5935)
@@ -457,9 +457,10 @@
     stat = [0, 0, 0]      # inserted, updated, unchanged
 
     for klass in self.classes.values ():
+      moduleId = self.__findModule (klass ['gnue_module'])
       cond = GConditions.buildConditionFromDict ( \
           {'gnue_name': klass ['gnue_name'],
-           'gnue_module': self.modules [klass ['gnue_module']]['gnue_id']})
+           'gnue_module': moduleId})
       resultSet = datasource.createResultSet (cond)
 
       if resultSet.firstRecord () is None:
@@ -471,7 +472,7 @@
         modifier = 1
 
       # replace the module's name by it's gnue_id
-      klass ['gnue_module'] = self.modules [klass ['gnue_module']] ['gnue_id']
+      klass ['gnue_module'] = moduleId
 
       if not self.doUpdate (resultSet, klass):
         modifier += 1
@@ -510,17 +511,8 @@
 
     for prop in self.properties.values ():
       # make sure we have a valid gnue_id for the referenced module
-      if self.modules.has_key (prop ['gnue_module']):
-        moduleId = self.modules [prop ['gnue_module']] ['gnue_id']
-      else:
-        mc = GConditions.buildConditionFromDict ( \
-                               {'gnue_name': prop ['gnue_module']})
-        rs = self._dtsModules.createResultSet (mc)
-        if rs.firstRecord () is None:
-          raise ModuleNotFoundError, (prop ['gnue_module'])
-        moduleId = rs.current.getField ('gnue_id')
+      moduleId = self.__findModule (prop ['gnue_module'])
 
-
       cond = GConditions.buildConditionFromDict ( \
           {'gnue_name'  : prop ['gnue_name'],
            'gnue_module': moduleId,
@@ -573,22 +565,9 @@
     stat = [0, 0, 0]      # inserted, updated, unchanged
 
     for proc in self.procedures.values ():
-
-      # make sure we have a valid gnue_id for the referenced module
-      if self.modules.has_key (proc ['gnue_module']):
-        moduleId = self.modules [proc ['gnue_module']] ['gnue_id']
-      else:
-        mc = GConditions.buildConditionFromDict ( \
-                               {'gnue_name': proc ['gnue_module']})
-        rs = self._dtsModules.createResultSet (mc)
-        if rs.firstRecord () is None:
-          raise ModuleNotFoundError, (proc ['gnue_module'])
-        moduleId = rs.current.getField ('gnue_id')
-
-
       cond = GConditions.buildConditionFromDict ( \
           {'gnue_name'  : proc ['gnue_name'],
-           'gnue_module': moduleId,
+           'gnue_module': self.__findModule (proc ['gnue_module']),
            'gnue_class' : self.classes [proc ['gnue_class']] ['gnue_id']})
       resultSet = self._dtsProcedure.createResultSet (cond)
 
@@ -702,6 +681,21 @@
 
 
   # ---------------------------------------------------------------------------
+  # Find a module by name
+  # ---------------------------------------------------------------------------
+
+  def __findModule (self, module):
+    if self.modules.has_key (module):
+      return self.modules [module]['gnue_id']
+    else:
+      mc = GConditions.buildConditionFromDict ({'gnue_name': module})
+      rs = self._dtsModules.createResultSet (mc)
+      if rs.firstRecord () is None:
+        raise ModuleNotFoundError, (module)
+      return rs.current.getField ('gnue_id')
+
+
+  # ---------------------------------------------------------------------------
   # Generate a new object id
   # ---------------------------------------------------------------------------
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]