The "simple" answer seems to be "override the db class."  That's
totally off the top of my head, and it may be completely unrealistic.

Something like (totally untested and almost definitely wrong. Consider
it pseudo-code):

class my_db(google.ext.db):
  def put(self, *objects, **kwargs):
    for o in objects:
      o.pre_put()
    super(google.ext.db, self).put(*objects, **kwargs)

Then the models that were overriding put() could put that override
code in pre_put() instead (and change put() to just call that before
calling super().put()...).

You'd have to juggle the nuances of things like post_put(), and any
side-effects.  But it seems like a reasonable compromise.

On Jan 14, 2:22 pm, boson <[email protected]> wrote:
> That is a curious situation.  I would like to know also if there is a
> way to inject code into the put-stream regardless of method called, as
> I have various put() overrides as well.
>
> On Jan 13, 9:45 pm, Devel63 <[email protected]> wrote:
>
> > I overrode the put method on a class derived from Model, primarily
> > because I wanted to do some accounting work when a new object was
> > saved (in the simplest case, just keeping track of a counter).  It
> > does its work, then calls super.
>
> > It works fine.
>
> > Until I use db.put([ob1,obj2,obj3]) to save a bunch of these, and then
> > of course the individual object.put() functions are never called.
>
> > Is there a best practice for this?  I really liked having it in the
> > "put", because then no caller needed to know about it, and it just
> > took care of itself.  Is the best thing to precede every "put" call
> > with an explicit "put_prep" call?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" 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/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to