72 lines
2.6 KiB
Python
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', sort_limit=20)
|
|
|
|
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)
|
|
|