This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
tabellio.searchform/tabellio/searchform/simple.py

72 lines
2.6 KiB
Python

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
from z3c.relationfield.schema import RelationChoice, RelationList
from plone.formwidget.contenttree import ObjPathSourceBinder
from tabellio.searchform.interfaces import MessageFactory as _
from Products.Five import BrowserView
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class ISearch(interface.Interface):
SearchableText = schema.TextLine(title=_(u'Text'), required=False)
class SearchForm(form.Form):
fields = field.Fields(ISearch)
ignoreContext = True
template = ViewPageTemplateFile('simple_templates/view_effectivesearch.pt')
def deputy_results(self):
catalog = getToolByName(self.context, 'portal_catalog')
data, errors = self.extractData()
if data.get('SearchableText') is None:
return []
return catalog(
portal_type=['themis.datatypes.deputy'],
SearchableText=data.get('SearchableText'))
def page_results(self):
catalog = getToolByName(self.context, 'portal_catalog')
data, errors = self.extractData()
if data.get('SearchableText') is None:
return []
return catalog(
portal_type=['Document', 'File', 'Folder', 'Link'],
SearchableText=data.get('SearchableText'),
sort_on='created', sort_order='descending')
def doc_results(self):
catalog = getToolByName(self.context, 'portal_catalog')
data, errors = self.extractData()
if data.get('SearchableText') is None:
return []
return catalog(
portal_type=['tabellio.documents.dossier', 'tabellio.documents.document'],
SearchableText=data.get('SearchableText'))
def event_results(self):
catalog = getToolByName(self.context, 'portal_catalog')
data, errors = self.extractData()
if data.get('SearchableText') is None:
return []
return catalog(
portal_type=['tabellio.agenda.parlevent', 'tabellio.agenda.event'],
SearchableText=data.get('SearchableText'))
@button.buttonAndHandler(u'Search')
def handleApply(self, action):
data, errors = self.extractData()
if not errors:
plone_utils = getToolByName(self.context, 'plone_utils')
plone_utils.addPortalMessage(_('Your search has been completed!'))
return
SimpleSearchView = wrap_form(SearchForm)