[Grok-dev] unique item in container question

Christian Klinger cklinger at novareto.de
Tue Mar 17 05:53:08 EDT 2009


Hi modiadi,

in zope3 there is a concept called NamedChooser. You can look here [1]
for the default implementation. Of course you can override the 
NameChooser for your NewsContainer so you can check if the news item 
already exists.

There is an example in Philipp´s *Web Component Development with Zope3*.

Hope this helps
- Christian

[1] 
http://svn.zope.org/zope.container/trunk/src/zope/container/contained.py?rev=97508&view=auto


> Hello,
> 
> I have a grok.AddForm wich adds a NewsItem in a NewsContainer. I try  
> to write some kind of validation so I dont have duplicate news in the  
> container.
> 
> As I see I have 3 a few options:
> 
> 1. Write an invariant in the NewsItem model where I check if the news  
> is unique in the *container*. I don't see this as a good option  
> because I have to explicitly refer to the container in side a model.
> 
> 2. Write the validation in the Add grok.action. The idea is that just  
> before adding the new item in the container I check if I have  
> duplicates. This was easy to do.
> 
> My problem is that I can't(or I don't know how to) return an error to  
> the user from this place.
> 
>      @grok.action('Add event')
>        def add(self,**data):
>            ...... do some validation
> 	  return None?
> 
> Do you have any suggestions ?
> 
> Thank you !



More information about the Grok-dev mailing list