[Grok-dev] unique item in container question

modiadi adi at modiadi.com
Tue Mar 17 06:26:12 EDT 2009


Hi Christian,

Thank you for the suggestion it is very helpful.

I still have to find a way to make the form report the error. I that  
this issue is grok related.

My problem becomes when the NameChoser rises a ValueError how can I  
make the form report the error to the user?

At this moment if i do this :

     @grok.action('Add event')
     def add(self,**data):
         .....
         if self.context.has_key(name):
             raise ValueError("some error")
It will report the exception in zope error log. I need to find a way  
to inform the user about the problem so he can change the name (in the  
context of this application this is how we must handle the situation)

Thank again



On Mar 17, 2009, at 11:53 AM, Christian Klinger wrote:

> 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 !
>
> _______________________________________________
> Grok-dev mailing list
> Grok-dev at zope.org
> http://mail.zope.org/mailman/listinfo/grok-dev
>



More information about the Grok-dev mailing list