From 25bcf98d7e9888656ebc75cb0c0ee461862c74d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 21 Oct 2011 17:54:21 +0200 Subject: [PATCH] add pfb doc search form, with some real results --- tabellio/searchform/configure.zcml | 7 ++ tabellio/searchform/docsearchpfb.pt | 61 +++++++++++++++ tabellio/searchform/form.py | 74 ++++++++++++++++++- .../form_templates/view_pfbdocsearch.pt | 10 +++ 4 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 tabellio/searchform/docsearchpfb.pt create mode 100644 tabellio/searchform/form_templates/view_pfbdocsearch.pt diff --git a/tabellio/searchform/configure.zcml b/tabellio/searchform/configure.zcml index 5d46665..1a4dba3 100644 --- a/tabellio/searchform/configure.zcml +++ b/tabellio/searchform/configure.zcml @@ -19,6 +19,13 @@ template="docsearch.pt" permission="zope2.View"/> + + + + + + + +
+

+
+ +
+ +
+ +
+ Nombre de résultats : +
+ +
+ +
+ + + +
+ + +
+ + + + + + diff --git a/tabellio/searchform/form.py b/tabellio/searchform/form.py index 0c68b08..78bd591 100644 --- a/tabellio/searchform/form.py +++ b/tabellio/searchform/form.py @@ -1,6 +1,7 @@ from zope import interface, schema from z3c.form import form, field, button from plone.z3cform.layout import wrap_form +from Products.CMFCore.utils import getToolByName from z3c.form.ptcompat import ViewPageTemplateFile @@ -12,10 +13,12 @@ from tabellio.searchform.interfaces import MessageFactory as _ from Products.Five import BrowserView from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile - class IFolderWithDocuments(interface.Interface): pass +class IFolderWithPfbDocuments(interface.Interface): + pass + class IDocumentSearch(interface.Interface): nodoc = schema.TextLine(title=_(u'Document Number'), required=False) nosuite = schema.TextLine(title=_(u'Suite Number'), required=False) @@ -111,7 +114,76 @@ class QuestionSearchForm(form.Form): return +class IDocumentPfbSearch(interface.Interface): + nodoc = schema.TextLine(title=_(u'Document Number'), required=False) + doctype = schema.Choice(title=_(u'Type'), required=False, + values=[_(u'Lorem'), _(u'Ipsum')]) + #subjects = + ttitle = schema.TextLine(title=_(u'Title'), required=False) + text = schema.TextLine(title=_(u'Text'), required=False) + authors = RelationList(title=_(u'Authors'), default=[], required=False, + value_type=RelationChoice(title=_(u'Author'), + source=ObjPathSourceBinder( + portal_type=['themis.datatypes.deputy']))) + # polgroups + # session + start = schema.Date(title=_(u'Start'), required=False) + end = schema.Date(title=_(u'End'), required=False) + + sort_on = schema.Choice(title=_(u'Sort By'), required=True, + values=[_(u'Type'), _(u'Number'), _(u'Session')]) + + +class DocumentPfbSearchForm(form.Form): + fields = field.Fields(IDocumentPfbSearch) + ignoreContext = True + template = ViewPageTemplateFile('form_templates/view_pfbdocsearch.pt') + + @button.buttonAndHandler(u'Search') + def handleApply(self, action): + data, errors = self.extractData() + if not errors and False: + plone_utils = getToolByName(self.context.context, 'plone_utils') + plone_utils.addPortalMessage(_('Your search has been completed!')) + return self.request.response.redirect('./') + return + + class SearchView(BrowserView): + def document_results(self): + f = DocumentPfbSearchForm(self.context, self.request) + f.update() + data, errors = f.extractData() + catalog = getToolByName(self.context, 'portal_catalog') + kw = {} + if data.get('ttitle'): + kw['Title'] = data.get('ttitle') + if data.get('start') and data.get('end'): + kw['dateDoc'] = {'query': [data.get('start'), data.get('end')], 'range': 'minmax'} + elif data.get('start'): + kw['dateDoc'] = {'query': data.get('start'), 'range': 'min'} + elif data.get('end'): + kw['dateDoc'] = {'query': data.get('end'), 'range': 'max'} + + if data.get('sort_on') == 'Type': + kw['sort_on'] = 'doctype' + elif data.get('sort_on') == 'Number': + kw['sort_on'] = 'no' + elif data.get('session') == 'Session': + kw['sort_on'] = 'session' + + if not kw: + return [] + + return catalog( + portal_type=['tabellio.documents.document'], + **kw) + + def document_pfb_search_form(self): + f = DocumentPfbSearchForm(self.context, self.request) + f.update() + return f.render() + def document_search_form(self): f = DocumentSearchForm(self.context, self.request) f.update() diff --git a/tabellio/searchform/form_templates/view_pfbdocsearch.pt b/tabellio/searchform/form_templates/view_pfbdocsearch.pt new file mode 100644 index 0000000..0845c72 --- /dev/null +++ b/tabellio/searchform/form_templates/view_pfbdocsearch.pt @@ -0,0 +1,10 @@ + + + +
+ + + + +