[Zope3-Users] set_before_add

gnotari at linkgroup.it gnotari at linkgroup.it
Fri Oct 14 10:36:45 EDT 2005


> On Fri, 14 Oct 2005 15:36:09 +0200, gnotari wrote
> > I'm at loss:
> >
> > I'm replicating the example at cap. 14.3 of Philipp's (Worldcookery)
> > book. It's all about auto-assigning names to object being added to
> containers.
> >
> > After much tinkering, it does seem to me that this directive
> >
> > <browser:addform
> >       ...
> >       ...
> >       set_before_add="id"
> > >
> >
> > is not working at all.
> > I throughly checked my NameChooser derived class, and verified it
> > works if I make it return some static "name".
> >
> > But if I set my NameChooser to use the new object's id attribute (as
> > per example) and try to Add the object, I'm not asked for the "id"
> > and immediately get the error "An empty name was provided. Names
> > cannot be empty."


> I just tried to have Zope auto assign the name of an object taking the
> TextLine field 'title' as name.  It worked just fine.  Remember
NameChooser
> has to be implemented on the container, not the object.  The
set_before_add
> should be added to the addform of the object itself.
>
> I wrote a small howto on NameChooser at http://counterfate.servebeer.com
>
> Replace the part in the chooseName function with:
>
> if not name:
>   name = object.id
>   return name

Sorry, but it does not solve.
I checked your code, and indeed I implemented the same way.
Indeed, my code works if I make it generate arbitrary names.

It just does not work if I try to name a new object after one of its
attributes because:
- the attribute value is not set at the time the object is created
- I cannot have the add menu ask for it before actually adding (this is
what set_before_add should be meant for, I suppose)

Just for info, I'm using Zope 3.1.

I'm open to any other suggestion as to how have my contained objects
(books) be added with thei ISBN code as name in their container.

thanks
Guido



More information about the Zope3-users mailing list