El 01/06/12 16:59, Michael Bayer escribió:
@appender needs to be a method that just accepts a mapped object to be added to the collection. then, @internally_instrumented is needed to prevent the collections system from placing additional insturmentation on standard methods like __setitem__. Also building custom dictionary collections is very difficult in any case (for me as well) so you were close, and that's pretty good !
A lot of thanks, Michael.. now it it works like a charm ;-)
class MyMappedCollection(dict): def __init__(self, data=None): if data: self.update(data) @collection.appender def _add_perm(self, pobj): l = dict.setdefault(self, pobj.permission, []) l.append(pobj) @collection.internally_instrumented def __setitem__(self, permission, pobj): self._add_perm(pobj) @collection.remover def _remove(self, perm): self[perm.permission].remove(perm) @collection.iterator def __iter__(self): for vals in self.itervalues(): for perm in vals: yield perm On Jun 1, 2012, at 9:38 AM, Antonio Beamud Montero wrote:Hi all: I'm trying to implement a permission system usign polymorphic associations. In my example only one object has permissions associated (ULine). The problem is trying to use a mapping with permission names as keys, and values Permission objects with a 1:1 user relation. A complete example here: http://pastebin.com/SqCfBCFp But I can't get this working, the next error is raised: child_state, child_dict = instance_state(child), \ AttributeError: 'list' object has no attribute '_sa_instance_state' A lot of thanks. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
-- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
