[BlueBream] disabling zope.schema constraint check in edit form

Joshua Immanuel josh at hipro.co.in
Thu Aug 18 03:59:56 EDT 2011


Hello all,

I use the zope.schema field's constraint parameter to check for the
uniqueness of a particular field like this

        class IMyObject(Interface):
        
                def check_for_uniqueness(value):
                        cat = getUtility(ICatalog)
                        results = cat.searchResults(object_name=value)
                        for rslt in results:
                                if rslt.name.lower() == value.lower():
                                        raise NameAlreadyExists(value)
                        return True
                        
                name = TextLine(title=u'Name', required=True,
                		constraint=check_for_uniqueness)
                ...
                
This goes well with the zope.formlib's AddForm. But in edit form if I
modify any other field other than the 'name' field I get the
'NameAlreadyExists' error. Worse case scenario is where I have a cancel
action button which just redirects to another page, that too screams for
the NameAlreadyExists error.

Is there a way to disable the constraint check in the EditForm if the
'name' field isn't modified?

What is the preferred way of doing these kind of checks?

Please guide me.

-- 
Joshua Immanuel
HiPro IT Solutions Private Limited
http://hipro.co.in
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
Url : http://mail.zope.org/pipermail/bluebream/attachments/20110818/3541a280/attachment.bin 


More information about the bluebream mailing list