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 sqlalchemy@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to