Changeset 4184
- Timestamp:
- 06/25/08 18:09:33 (2 months ago)
- Files:
-
- trunk/dabo/ui/dDataControlMixinBase.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/dabo/ui/dDataControlMixinBase.py
r4178 r4184 117 117 self.Value = self.getBlankValue() 118 118 else: 119 if self._srcIsInstanceMethod is None and self.Source is not None: 120 if isinstance(self.Source, basestring): 119 src = self.Source 120 if self._srcIsInstanceMethod is None and src is not None: 121 if isinstance(src, basestring): 121 122 self._srcIsInstanceMethod = False 122 123 else: 123 self._srcIsInstanceMethod = eval("type(self.Source.%s)" % self.DataField) == type(self.update) 124 self._srcIsInstanceMethod = callable(getattr(src, self.DataField)) 125 srcatt = getattr(src, self.DataField) 124 126 if self._srcIsInstanceMethod: 125 expr = "self.Source.%s()" % self.DataField127 self.Value = srcatt() 126 128 else: 127 expr = "self.Source.%s" % self.DataField 128 try: 129 self.Value = eval(expr) 130 except: 131 ## Couldn't evaluate, for whatever reason. Do the same thing that we do 132 ## for bizobj datasources: fill in the blank value. 133 self.Value = self.getBlankValue() 134 #dabo.errorLog.write("Could not evaluate value for %s" % expr) 129 self.Value = srcatt 135 130 136 131 … … 340 335 try: 341 336 self._designerMode = self.Form._designerMode 342 except :337 except AttributeError: 343 338 self._designerMode = False 344 339 return self._designerMode … … 380 375 elif ds.startswith("self."): 381 376 # it's a locally resolvable reference. 382 try: 383 self.__src = eval(ds) 384 self._srcIsBizobj = isinstance(self.__src, dabo.biz.dBizobj) 385 except: 386 dabo.errorLog.write("Couldn't evaluate DataSource '%s'" % ds) 377 def resolveObjRef(txt, ref=None): 378 sp = txt.split(".", 1) 379 if ref is None: 380 ref = eval(sp[0]) 381 return resolveObjRef(sp[1], ref) 382 else: 383 try: 384 ref = getattr(ref, sp[0]) 385 except AttributeError: 386 return None 387 if len(sp) > 1: 388 return resolveObjRef(sp[1], ref) 389 else: 390 return ref 391 nonself = ds.split(".", 1)[1] 392 self.__src = resolveObjRef(nonself, self) 393 self._srcIsBizobj = isinstance(self.__src, dabo.biz.dBizobj) 387 394 else: 388 395 # See if it's a RegID reference to another object 389 try: 390 self.__src = self.Form.getObjectByRegID(ds) 391 except: 392 self.__src = None 396 self.__src = self.Form.getObjectByRegID(ds) 393 397 if self.__src is None: 394 398 # It's a bizobj reference; get it from the Form. Note that we could
