164 lines
6.1 KiB
Python
164 lines
6.1 KiB
Python
from zope import interface, schema
|
|
from z3c.form import 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
|
|
|
|
import form
|
|
import cmpfunctions
|
|
|
|
class SimpleSearchView(BrowserView):
|
|
batch_macros = ViewPageTemplateFile('batch_macros.pt')
|
|
js_macros = ViewPageTemplateFile('js_macros.pt')
|
|
|
|
def deputy_search_form(self):
|
|
f = form.DeputySearchForm(self.context, self.request)
|
|
f.update()
|
|
return f.render()
|
|
|
|
def document_pfb_search_form(self):
|
|
f = form.DocumentPfbSearchForm(self.context, self.request)
|
|
f.update()
|
|
return f.render()
|
|
|
|
def document_search_form(self):
|
|
f = form.DocumentSearchForm(self.context, self.request)
|
|
f.update()
|
|
return f.render()
|
|
|
|
def dossier_search_form(self):
|
|
f = form.DossierSearchForm(self.context, self.request)
|
|
f.update()
|
|
return f.render()
|
|
|
|
def question_search_form(self):
|
|
f = form.QuestionSearchForm(self.context, self.request)
|
|
f.update()
|
|
return f.render()
|
|
|
|
def event_search_form(self):
|
|
f = form.EventSearchForm(self.context, self.request)
|
|
f.update()
|
|
return f.render()
|
|
|
|
def deputy_form_url(self):
|
|
catalog = getToolByName(self.context, 'portal_catalog')
|
|
try:
|
|
return catalog(
|
|
portal_type='Folder',
|
|
object_provides=('tabellio.webviews.deputy.IDeputiesAndOthersFolderView',
|
|
'tabellio.webviews.deputy.IPfbDeputiesFolderView',
|
|
'tabellio.webviews.deputy.IFolderView'),
|
|
limit=1)[0].getObject().absolute_url()
|
|
except IndexError:
|
|
return '#'
|
|
|
|
def docdos_form_url(self):
|
|
catalog = getToolByName(self.context, 'portal_catalog')
|
|
try:
|
|
return catalog(
|
|
portal_type='Folder',
|
|
object_provides=('tabellio.searchform.form.IFolderWithPfbDocuments',
|
|
'tabellio.searchform.form.IFolderWithDocuments'),
|
|
limit=1)[0].getObject().absolute_url()
|
|
except IndexError:
|
|
return '#'
|
|
|
|
def portal_url(self):
|
|
return getToolByName(self.context, 'portal_url').getPortalPath()
|
|
|
|
def event_form_url(self):
|
|
return self.portal_url() + '/eventsearch'
|
|
|
|
def deputy_results(self):
|
|
catalog = getToolByName(self.context, 'portal_catalog')
|
|
if not self.request.form.get('SearchableText'):
|
|
return []
|
|
sorton = self.request.form.get('deputies-sort')
|
|
c = catalog(
|
|
portal_type=['themis.datatypes.deputy'],
|
|
SearchableText=self.request.form.get('SearchableText'),
|
|
sort_on="sortable_title", sort_order='ascending')
|
|
if sorton == 'polgroup':
|
|
def cmp_by_polgroup(x, y):
|
|
xo = x.getObject()
|
|
yo = y.getObject()
|
|
if (xo.polgroup is None or xo.polgroup.to_object is None) and (
|
|
yo.polgroup is None or yo.polgroup.to_object is None):
|
|
return 0
|
|
if (xo.polgroup is None or xo.polgroup.to_object is None):
|
|
return -1
|
|
if (yo.polgroup is None or yo.polgroup.to_object is None):
|
|
return 1
|
|
return cmp(xo.polgroup.to_object.id, yo.polgroup.to_object.id)
|
|
c = list(c)
|
|
c.sort(cmp_by_polgroup)
|
|
return c
|
|
else:
|
|
return c
|
|
|
|
def page_results(self):
|
|
catalog = getToolByName(self.context, 'portal_catalog')
|
|
if not self.request.form.get('SearchableText'):
|
|
return []
|
|
return catalog(
|
|
portal_type=['Document', 'File', 'Folder', 'Link'],
|
|
SearchableText=self.request.form.get('SearchableText'),
|
|
sort_on='created', sort_order='descending')
|
|
|
|
def doc_results(self):
|
|
catalog = getToolByName(self.context, 'portal_catalog')
|
|
if not self.request.form.get('SearchableText'):
|
|
return []
|
|
sorton = self.request.form.get('docs-sort', 'session')
|
|
search_query = self.request.form.get('SearchableText')
|
|
try:
|
|
int(search_query)
|
|
except ValueError:
|
|
c = catalog(
|
|
portal_type=['tabellio.documents.dossier',
|
|
'tabellio.documents.document',
|
|
'tabellio.documents.question'],
|
|
SearchableText=search_query)
|
|
else:
|
|
c = catalog(
|
|
portal_type=['tabellio.documents.document',
|
|
'tabellio.documents.dossier'],
|
|
no=search_query)
|
|
if sorton == 'session':
|
|
cmpf = cmpfunctions.Cmp().cmp_session
|
|
elif sorton == 'type':
|
|
cmpf = cmpfunctions.Cmp().cmp_multitype
|
|
elif sorton == 'number':
|
|
cmpf = cmpfunctions.Cmp().cmp_number
|
|
return sorted(c, cmpf);
|
|
|
|
def event_results(self):
|
|
catalog = getToolByName(self.context, 'portal_catalog')
|
|
if not self.request.form.get('SearchableText'):
|
|
return []
|
|
return catalog(
|
|
portal_type=['tabellio.agenda.parlevent', 'tabellio.agenda.event',
|
|
'tabellio.agenda.comevent'],
|
|
SearchableText=self.request.form.get('SearchableText'),
|
|
sort_on='start', sort_order='descending')
|
|
|
|
def get_batchlinkparams(self):
|
|
d = dict()
|
|
for key in self.request.form:
|
|
d[key] = self.request.form[key]
|
|
if type(d[key]) is str:
|
|
d[key] = unicode(d[key], 'utf-8').encode('utf-8')
|
|
elif type(d[key]) is unicode:
|
|
d[key] = d[key].encode('utf-8')
|
|
return d
|