|
|
@@ -174,35 +174,6 @@ class ConnectionRepository(
|
|
|
return retVal
|
|
|
|
|
|
def generateGlobalObject(self, doId, dcname, values=None):
|
|
|
- def applyFieldValues(distObj, dclass, values):
|
|
|
- for i in range(dclass.getNumInheritedFields()):
|
|
|
- field = dclass.getInheritedField(i)
|
|
|
- if field.asMolecularField() is None:
|
|
|
- value = values.get(field.getName(), None)
|
|
|
- if value is None and field.isRequired():
|
|
|
- # Gee, this could be better. What would really be
|
|
|
- # nicer is to get value from field.getDefaultValue
|
|
|
- # or similar, but that returns a binary string, not
|
|
|
- # a python tuple, like the following does. If you
|
|
|
- # want to change something better, please go ahead.
|
|
|
- packer = DCPacker()
|
|
|
- packer.beginPack(field)
|
|
|
- packer.packDefaultValue()
|
|
|
- packer.endPack()
|
|
|
-
|
|
|
- unpacker = DCPacker()
|
|
|
- unpacker.setUnpackData(packer.getString())
|
|
|
- unpacker.beginUnpack(field)
|
|
|
- value = unpacker.unpackObject()
|
|
|
- unpacker.endUnpack()
|
|
|
- if value is not None:
|
|
|
- function = getattr(distObj, field.getName())
|
|
|
- if function is not None:
|
|
|
- function(*value)
|
|
|
- else:
|
|
|
- self.notify.error("\n\n\nNot able to find %s.%s"%(
|
|
|
- distObj.__class__.__name__, field.getName()))
|
|
|
-
|
|
|
# Look up the dclass
|
|
|
dclass = self.dclassesByName.get(dcname+self.dcSuffix)
|
|
|
if dclass is None:
|
|
|
@@ -229,7 +200,37 @@ class ConnectionRepository(
|
|
|
distObj.generateInit() # Only called when constructed
|
|
|
distObj.generate()
|
|
|
if values is not None:
|
|
|
- applyFieldValues(distObj, dclass, values)
|
|
|
+ for i in range(dclass.getNumInheritedFields()):
|
|
|
+ field = dclass.getInheritedField(i)
|
|
|
+ if field.asMolecularField() is None:
|
|
|
+ value = values.get(field.getName(), None)
|
|
|
+ if value is None and field.isRequired():
|
|
|
+ # Gee, this could be better. What would really be
|
|
|
+ # nicer is to get value from field.getDefaultValue
|
|
|
+ # or similar, but that returns a binary string, not
|
|
|
+ # a python tuple, like the following does. If you
|
|
|
+ # want to change something better, please go ahead.
|
|
|
+ packer = DCPacker()
|
|
|
+ packer.beginPack(field)
|
|
|
+ packer.packDefaultValue()
|
|
|
+ packer.endPack()
|
|
|
+
|
|
|
+ unpacker = DCPacker()
|
|
|
+ unpacker.setUnpackData(packer.getString())
|
|
|
+ unpacker.beginUnpack(field)
|
|
|
+ value = unpacker.unpackObject()
|
|
|
+ unpacker.endUnpack()
|
|
|
+ if value is not None:
|
|
|
+ function = getattr(distObj, field.getName())
|
|
|
+ if function is not None:
|
|
|
+ function(*value)
|
|
|
+ else:
|
|
|
+ self.notify.error(
|
|
|
+ "\n\n\nNot able to find %s.%s" % (
|
|
|
+ distObj.__class__.__name__,
|
|
|
+ field.getName()
|
|
|
+ )
|
|
|
+ )
|
|
|
distObj.announceGenerate()
|
|
|
distObj.parentId = 0
|
|
|
distObj.zoneId = 0
|