Adam Summers wrote:
> Hi Tom & Widget Afficionados.
> 
> Thanks for the help so far.
> 
> My problem is now this:
> 
>     From this code (which Tom supplied), how do I code the logic (in
> bold)      
> 
>     def _toFieldValue(self, input):
>         data = super(ImageWidget, self)._toFieldValue(input)
>         if data is not None:
>             img = Image(data)
>             notify(ObjectCreatedEvent(img))
>             return img
>       *else: #data is None, ie. the File input field was left blank and we 
> don't want to 
>           #replace the current value of the Image Widget with an empty value.
>           currentImg = the Image object which the field is being rendered for
>           return currentImg 
> 
> *
> 
> I can't rely on
> 
>       field = self.context
> 
>             image = field.get(field.context)
> 
> 
> logic to find the data, because my schema can contain:
> 
> class Iclaim(IContained):
> 
>       """Claim"""
> 
>       supDoc = List(title=_(u"Supporting Docs List"), 
> value_type=Object(IImage, __name__='ImgItem', title=_(u"Image")))
> 
>       img = Object(IImage, title=_(u"Single img"), required=False)
> 
> 
>     And hence, the self.context.context points to the claim object, not
> the list inside when rendering supDoc

Hi Adam,
You can rely on:

  field = self.context
  image = field.get(field.context)

because the widget is for an attribute object of type IImage.

Your supDoc attribute object is a List Type - not an IImage.
In this case you'd need another widget - for a list of IImage.

I wouldn't been too keen to tackle the html work effort and would
probably look at an alternative along the lines of...

class IImageList(IContainer):
  contains(zope.app.image.interfaces.IImage)

class IClaim(IContained):
  supDoc=Object(schema=IImageList)

Make supDoc traversable, then you wouldn't need the custom widget here
because you can store Images directly in supDoc view with the
browser:containerView's.

_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to