+
diff --git a/themis/fields/widgets.py b/themis/fields/widgets.py
index d64e183..0e401a9 100644
--- a/themis/fields/widgets.py
+++ b/themis/fields/widgets.py
@@ -28,6 +28,7 @@ from themis.fields.interfaces import IRelatedDoc
from themis.fields.interfaces import IRelatedDocs
from themis.fields.interfaces import IMailId, IMailIdWidget
from themis.fields.interfaces import IMailRefId, IMailRefIdWidget
+from themis.fields.interfaces import IPreviewDoc, IPreviewDocWidget
from themis.fields.interfaces import IRelatedDocWidget, IRelatedDocsWidget
from themis.fields.interfaces import IDocHistoLineWidget, IDocHistoLine
@@ -339,3 +340,29 @@ class DocHistoLineConverter(BaseDataConverter):
print 'XXX, to field value'
return value
+
+@adapter(IPreviewDoc, IFormLayer)
+@implementer(IFieldWidget)
+def PreviewDocFieldWidget(field, request):
+ """IFieldWidget factory for PreviewDoc"""
+ return FieldWidget(field, PreviewDocWidget(request))
+
+class PreviewDocWidget(Widget):
+ implements(IPreviewDocWidget)
+
+ def href(self):
+ if not hasattr(self.context, 'fichier'):
+ return None
+ if self.context.fichier:
+ return self.form.widgets['fichier'].download_url
+ return None
+
+ def filename(self):
+ if not hasattr(self.context, 'fichier'):
+ return ''
+ if self.context.fichier:
+ if self.form.widgets['fichier'].filename_encoded:
+ return self.form.widgets['fichier'].filename_encoded
+ return 'unknown.pdf'
+ return ''
+
diff --git a/themis/fields/widgets.zcml b/themis/fields/widgets.zcml
index e7763ed..d454f71 100644
--- a/themis/fields/widgets.zcml
+++ b/themis/fields/widgets.zcml
@@ -91,4 +91,18 @@
layer="z3c.form.interfaces.IFormLayer"
template="dochistoline_input.pt"/>
+