On Monday 20 August 2007 18:09:41 jason kirtland wrote:
> svilen wrote:
> > And anyway i need to first create the object and just then append
> > it (the decorators will first fire event on the object and just
> > then append(), that is call me), so may have to look
> > further/deeper. Maybe i can make my append create objects first
> > and then call the actual appender - so yes, this is the way.
>
> Either way. The @internally_instrumented is there exactly for that
> flexibility on ORM interface methods like 'append' and as an
> override for ABC decoration on python interface methods. (The
> regular recipes also override ABC decoration.) Or you can do you
> work elsewhere and forward to an instrumented method for event
> service.
an example on this? i can't figure it out, whatever i do, that
ABC-auto-decorators loop kicks in and byebye my nice append - even if
the appender is not append() at all. Why should append() be
instrumented regardless of it being or not the used appender?
@internally_instrumented - u mean my append() to do everything, even
firing of events? uhm. ugly, for my simple case.
and are there some fire-this-event() funcs? those __del()/__set() do
not seem like very exposed...
class _NotSet: pass
class MyCollection( list):
factory = None
def append( me, obj =_NotSet, **kwargs):
if obj is _NotSet:
print 'success!', kwargs
obj = factory(**kwargs)
me._append( obj)
return obj
@sqlalchemy.orm.collections.collection.appender
def _append( me, *a,**k): return list.append(me, *a,**k)
m = mapper( A, .., rel = relation( collection_class =
MyCollection)... )
a=A()
a.rel.append( key1=val1, key2=val2)
#this always fails/TypeError, as the append called is not mine, but an
wrapped/instrumented one and that one has no kwargs.
--------
btw, i noted the sequence fire-event() / original-func-call() is not
same/consistent in those auto-decorators, e.g. for remove() and del()
etc.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---