Thanks guys, both great suggestions.

I'll try and get PreCallHook working because that would allow me to add a
"pre_put()" method to my Models, and then using these PreCallHooks I can
call pre_put() for each of the entities being put into the Datastore.

Failing that, I'll create a new derived property for my Model and do as
Devel63 said.


2010/1/15 Devel63 <danstic...@gmail.com>

> Nick,
>
> I've been faced with your exact situation.  I have to say I don't
> understand PreCallHook, and maybe that would be the best approach, but
> here's what I do know.
>
> Overriding "put" is a bad idea, and as you point out, the override
> will not be called in a batch put.
>
> I found that the most elegant solution was to derive a new type of
> db.Property, and override its get_value_for_datastore.  Then GAE will
> automatically do what you want regardless of how the entity is being
> put.
>
>
> On Jan 14, 1:51 am, Eric Ka Ka Ng <ngk...@gmail.com> wrote:
> > would a PreCallHook works for your case?
> >
> > http://code.google.com/appengine/articles/hooks.html
> >
> > - eric
> >
> > 2010/1/14 Nickolas Daskalou <n...@daskalou.com>:
> >
> > > I have a property of a Model that is a hash of another property of the
> same
> > > Model, eg:
> >
> > > class MyModel(db.Model):
> > >   something = db.StringProperty()
> > >   something_hash = db.StringProperty()
> > >   def generate_hash(self):
> > >     self.something_hash = sha1(self.something)
> >
> > > I want generate_hash() to be automatically called just before the
> entity is
> > > put() into the Datastore, without the developer having to explicitly
> call
> > > entity.generate_hash().
> >
> > > I know I can create a put() method that makes such a call and then
> calls
> > > put() on the superclass, but (a) is that the best way to do it, and (b)
> if
> > > the put() is part of a batch put (eg. via db.put(entities)), will the
> put()
> > > method of each model instance still be called?
> >
> > > Nick
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Google App Engine" group.
> > > To post to this group, send email to google-appengine@googlegroups.com
> .
> > > To unsubscribe from this group, send email to
> > > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com>
> .
> > > For more options, visit this group at
> > >http://groups.google.com/group/google-appengine?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>
>
>
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.

Reply via email to