From be885a99cd392eab1d179a3eeada27d93c243d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 23 Nov 2011 17:27:36 +0100 Subject: [PATCH] add "adopted texts" pane to pfb doc search (#974) --- tabellio/searchform/advsearch-pfb.pt | 14 +++++ tabellio/searchform/docsearchpfb.pt | 93 +++++++++++++++++++++++++++- tabellio/searchform/form.py | 82 +++++++++++++++++++----- 3 files changed, 172 insertions(+), 17 deletions(-) diff --git a/tabellio/searchform/advsearch-pfb.pt b/tabellio/searchform/advsearch-pfb.pt index b9f819f..9fdb308 100644 --- a/tabellio/searchform/advsearch-pfb.pt +++ b/tabellio/searchform/advsearch-pfb.pt @@ -56,6 +56,20 @@ + + + diff --git a/tabellio/searchform/form.py b/tabellio/searchform/form.py index 3bb4420..6fd6767 100644 --- a/tabellio/searchform/form.py +++ b/tabellio/searchform/form.py @@ -510,6 +510,55 @@ class DocumentPfbSearchForm(form.Form): return +class IAdoptedDocumentPfbSearch(interface.Interface): + search_type_is_adopteddocument = schema.TextLine(title=u'Search Type', default=u'1') + + nodoc = schema.TextLine(title=_(u'Document Number'), required=False) + l_doctypes = schema.List(title=_(u'Types'), required=False, + value_type=schema.Choice(title=_(u'Type'), required=False, + values=[_(u'Projets'), _(u'Propositions')])) + ttitle = schema.TextLine(title=_(u'Title'), required=False) + text = schema.TextLine(title=_(u'Text'), required=False) + authors = schema.TextLine(title=_(u'Authors'), required=False) + l_polgroups = schema.List(title=_(u'Political Groups'), required=False, + value_type=schema.Choice(title=_(u'Political Group'), + required=False, source=possible_polgroups)) + l_topics = schema.List(title=_(u'Topics'), required=False, + value_type=schema.Choice(required=False, + source=possible_topics)); + session = schema.Choice(title=_(u'Legislature / Session'), required=False, + source=possible_sessions) + start = schema.Date(title=_(u'Start'), required=False) + end = schema.Date(title=_(u'End'), required=False) + adopted = schema.Bool(title=_(u'Limit to adopted'), required=False, default=True) + + sort_on = schema.Choice(title=_(u'Sort By'), required=True, + default=_(u'Session'), + values=[_(u'Session'), _(u'Type'), _(u'Number')]) + + +class AdoptedDocumentPfbSearchForm(form.Form): + prefix = 'adopteddocument' + fields = field.Fields(IAdoptedDocumentPfbSearch) + fields['authors'].widgetFactory = FieldAuthorsWidget + fields['l_doctypes'].widgetFactory = FieldDroppedCheckboxWidget + fields['l_polgroups'].widgetFactory = FieldDroppedCheckboxWidget + fields['l_topics'].widgetFactory = FieldDroppedCheckboxWidget + fields['sort_on'].widgetFactory = FieldRadioboxesWidget + ignoreContext = True + template = ViewPageTemplateFile('form_templates/view_form.pt') + + def updateWidgets(self): + super(AdoptedDocumentPfbSearchForm, self).updateWidgets() + self.widgets['adopted'].mode = z3c.form.interfaces.HIDDEN_MODE + self.widgets['search_type_is_adopteddocument'].mode = z3c.form.interfaces.HIDDEN_MODE + + @button.buttonAndHandler(_(u'Submit')) + def handleApply(self, action): + pass + + + class IDeputySearch(interface.Interface): search_type_is_deputy = schema.TextLine(title=u'Search Type', default=u'1', required=False) @@ -555,23 +604,9 @@ class EventSearchForm(form.Form): pass -class DeputySearchForm(form.Form): - prefix = 'deputy' - fields = field.Fields(IDeputySearch) - ignoreContext = True - template = ViewPageTemplateFile('form_templates/view_form.pt') - - def updateWidgets(self): - super(DeputySearchForm, self).updateWidgets() - self.widgets['search_type_is_deputy'].mode = z3c.form.interfaces.HIDDEN_MODE - - @button.buttonAndHandler(_(u'Submit')) - def handleApply(self, action): - pass - - class IGlobalSearchForm(interface.Interface): search_type_is_document = schema.TextLine(title=u'Search Type', required=False) + search_type_is_adopteddocument = schema.TextLine(title=u'Search Type', required=False) search_type_is_dossier = schema.TextLine(title=u'Search Type', required=False) search_type_is_question = schema.TextLine(title=u'Search Type', required=False) @@ -663,7 +698,7 @@ class SearchView(BrowserView): return d def search_results(self, search_type): - #print 'search type:', search_type + print 'search type:', search_type if self.request.form.get('document.widgets.search_type_is_document'): GlobalSearchForm.prefix = 'document' @@ -671,6 +706,8 @@ class SearchView(BrowserView): GlobalSearchForm.prefix = 'dossier' elif self.request.form.get('question.widgets.search_type_is_question'): GlobalSearchForm.prefix = 'question' + elif self.request.form.get('adopteddocument.widgets.search_type_is_adopteddocument'): + GlobalSearchForm.prefix = 'adopteddocument' f = GlobalSearchForm(self.context, self.request) f.update() @@ -680,6 +717,7 @@ class SearchView(BrowserView): if not data.get('search_type_is_%s' % search_type): return None + print 'data:', data if data.get('ttitle'): kw['Title'] = data.get('ttitle') @@ -748,6 +786,8 @@ class SearchView(BrowserView): if data.get('search_type_is_document'): kw['portal_type'] = 'tabellio.documents.document' + elif data.get('search_type_is_adopteddocument'): + kw['portal_type'] = 'tabellio.documents.document' elif data.get('search_type_is_dossier'): kw['portal_type'] = 'tabellio.documents.dossier' elif data.get('search_type_is_question'): @@ -824,6 +864,8 @@ class SearchView(BrowserView): if data.get('sort_on') == 'Type': if data.get('search_type_is_document'): cmp_function = cmp_doctype + elif data.get('search_type_is_adopteddocument'): + cmp_function = cmp_doctype elif data.get('search_type_is_dossier'): cmp_function = cmp_dostype elif data.get('search_type_is_question'): @@ -854,6 +896,14 @@ class SearchView(BrowserView): def document_search_results(self): return self.search_results(search_type='document') + def adopted_document_pfb_search_form(self): + f = AdoptedDocumentPfbSearchForm(self.context, self.request) + f.update() + return f.render() + + def adopted_document_search_results(self): + return self.search_results(search_type='adopteddocument') + def dossier_search_form(self): f = DossierSearchForm(self.context, self.request) f.update()