diff --git a/themis/fields/__init__.py b/themis/fields/__init__.py index 793e63c..a0f8b41 100644 --- a/themis/fields/__init__.py +++ b/themis/fields/__init__.py @@ -29,6 +29,7 @@ from themis.fields.interfaces import IRelatedDoc from themis.fields.interfaces import IRelatedDocs from themis.fields.interfaces import IMailId from themis.fields.interfaces import IMailRefId +from themis.fields.interfaces import IPreviewDoc from themis.fields.interfaces import IDocHistoLine, IDocHistoLines @@ -395,3 +396,5 @@ class DocHistoLines(Field): if attr in kw: del kw[attr] super(DocHistoLines, self).__init__(**kw) +class PreviewDoc(Field): + implements(IPreviewDoc, IFromUnicode) diff --git a/themis/fields/editors.py b/themis/fields/editors.py index 918846d..6c7b5de 100644 --- a/themis/fields/editors.py +++ b/themis/fields/editors.py @@ -17,6 +17,7 @@ from themis.fields import RelatedDocs from themis.fields import MailId from themis.fields import MailRefId from themis.fields import DocHistoLines +from themis.fields import PreviewDoc from plone.schemaeditor.fields import FieldFactory @interface.implementer(editor_ifaces.IFieldEditFormSchema) @@ -56,3 +57,6 @@ MailRefIdFactory = FieldFactory(MailRefId, u'Mail Reference') MailIdFactory = FieldFactory(MailId, u'Mail Number') DocHistoLinesFactory = FieldFactory(DocHistoLines, u'Historic Lines') + +PreviewDocFactory = FieldFactory(PreviewDoc, u'Preview Doc') + diff --git a/themis/fields/editors.zcml b/themis/fields/editors.zcml index 66484de..deb2095 100644 --- a/themis/fields/editors.zcml +++ b/themis/fields/editors.zcml @@ -97,4 +97,9 @@ component=".editors.DocHistoLinesFactory" /> + + diff --git a/themis/fields/handlers.py b/themis/fields/handlers.py index 7b4e47e..376f97d 100644 --- a/themis/fields/handlers.py +++ b/themis/fields/handlers.py @@ -26,6 +26,7 @@ if HAVE_SUPERMODEL: from themis.fields import MailId from themis.fields import MailRefId from themis.fields import DocHistoLines + from themis.fields import PreviewDoc class CommissionHandler_(BaseHandler): pass @@ -122,3 +123,7 @@ if HAVE_SUPERMODEL: DocHistoLinesHandler = DocHistoLinesHandler_(DocHistoLines) + class PreviewDocHandler_(BaseHandler): + pass + + PreviewDocHandler = PreviewDocHandler_(PreviewDoc) diff --git a/themis/fields/handlers.zcml b/themis/fields/handlers.zcml index 389a082..dd5d933 100644 --- a/themis/fields/handlers.zcml +++ b/themis/fields/handlers.zcml @@ -99,4 +99,9 @@ name="themis.fields.DocHistoLines" /> + + diff --git a/themis/fields/interfaces.py b/themis/fields/interfaces.py index cf89c87..8f862c6 100644 --- a/themis/fields/interfaces.py +++ b/themis/fields/interfaces.py @@ -152,3 +152,16 @@ class IDocHistoLines(IList): class IDocHistoLineWidget(IWidget): pass + +class IPreviewDoc(IField): + default = schema.Text( + description=IField['default'].description, + required=False) + + missing_value = schema.Text( + title=IField['missing_value'].title, + description=IField['missing_value'].description, + required=False) + +class IPreviewDocWidget(IWidget): + pass diff --git a/themis/fields/previewdoc_display.pt b/themis/fields/previewdoc_display.pt new file mode 100644 index 0000000..3abd0c9 --- /dev/null +++ b/themis/fields/previewdoc_display.pt @@ -0,0 +1,11 @@ + + +

Pas de lecteur PDF intégré, vous pouvez ouvrir le fichier + en suivant ce lien : plop.pdf.

+
+ 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"/> + + + + + +