src/pyams_file/widget/__init__.py
changeset 7 89e746950918
parent 0 63811b2a5670
child 12 3db593855266
--- a/src/pyams_file/widget/__init__.py	Fri Mar 20 17:30:42 2015 +0100
+++ b/src/pyams_file/widget/__init__.py	Fri Mar 20 17:31:05 2015 +0100
@@ -20,9 +20,10 @@
 from pyams_file.interfaces import IFileField, IFileWidget, IImageField, IImageWidget, \
     IThumnailImageWidget, IThumbnailImageField, DELETED_FILE
 from pyams_form.interfaces.form import IFormLayer
-from z3c.form.interfaces import IFieldWidget, NOT_CHANGED, IDataConverter
+from z3c.form.interfaces import NOT_CHANGED, IFieldWidget, IDataConverter
 
 # import packages
+from pyams_form.widget import widgettemplate_config
 from pyams_utils.adapter import adapter_config
 from z3c.form.browser.file import FileWidget as BaseFileWidget
 from z3c.form.converter import BaseDataConverter
@@ -51,26 +52,34 @@
             return toBytes(value)
 
 
+@widgettemplate_config(mode='input', template='templates/file-input.pt', widget=IFileWidget, layer=IFormLayer)
+@widgettemplate_config(mode='display', template='templates/file-display.pt', widget=IFileWidget, layer=IFormLayer)
 @implementer_only(IFileWidget)
 class FileWidget(BaseFileWidget):
     """File widget"""
 
-    label_css_class = 'input input-file'
-
     @property
     def current_value(self):
         if self.form.ignoreContext:
             return None
-        return self.field.get(self.context)
+        lang = getattr(self, 'lang', None)
+        if lang is None:
+            return self.field.get(self.context)
+        else:
+            value = self.field.get(self.context)
+            if isinstance(value, dict):
+                value = value.get(lang)
+            return value
 
     @property
     def deletable(self):
         if self.required:
             return False
-        elif self.value is NOT_CHANGED:
-            return self.current_value is not None
+        if not self.ignoreContext:
+            value = self.current_value
         else:
-            return self.value is not None
+            value = self.value
+        return bool(value)
 
 
 @adapter_config(context=(IFileField, IFormLayer), provides=IFieldWidget)
@@ -78,6 +87,8 @@
     return FieldWidget(field, FileWidget(request))
 
 
+@widgettemplate_config(mode='input', template='templates/image-input.pt', widget=IImageWidget, layer=IFormLayer)
+@widgettemplate_config(mode='display', template='templates/image-display.pt', widget=IImageWidget, layer=IFormLayer)
 @implementer_only(IImageWidget)
 class ImageWidget(FileWidget):
     """Image widget"""