[Zope3-Users] Infinite recursion when storing FieldProperties in as
annotations (using IAttributeAnnotations).
Alec Munro
alecmunro at gmail.com
Wed Aug 24 15:22:56 EDT 2005
Hi All,
I have some data that I want to store as annotations on an object
(currently using IAttributeAnnotations), and I want to use
FieldProperty objects to provide default values and validation. In
general, this works flawlessly. I can create a new object, and edit
it's properties. Unfortunately, if I create new object, view it's
properties, then attempt to view it's properties again, I get a
maximum recursion exceeded error. I assume there is something about
the way the init function is constructed that is causing this. Here's
how it works generally:
KEY = "demographicinfo"
def getterAndSetter(key):
def getter(self):
return self.mapping[key]
def setter(self, obj):
self.mapping[key] = obj
return getter, setter
class DemographicInfo(object):
implements(IDemographicInfo)
def getAnnotations(self):
annotations = IAnnotations(self.context)
return annotations
def __init__(self, context):
self.context = context
annotations = self.getAnnotations()
mapping = annotations.get(KEY)
if mapping is None:
blank = {}
blank['birth_date'] = FieldProperty(IDemographicInfo['birth_date'])
blank['sex'] = FieldProperty(IDemographicInfo['sex'])
mapping = annotations[KEY] = blank
self.mapping = mapping
birth_date = property(*getterAndSetter('birth_date'))
sex = property(*getterAndSetter('sex'))
It appears to be the getter method that is causing the trouble, but I
can't really be sure.
I would appreciate any advise on this.
Thanks,
Alec Munro
More information about the Zope3-users
mailing list