from zope import interface, schema from z3c.form import form, field, button from plone.z3cform.layout import wrap_form 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 IFolderWithDocuments(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) doctype = schema.Set(title=_(u'Type'), required=False, value_type=schema.Choice(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) class DocumentSearchForm(form.Form): fields = field.Fields(IDocumentSearch) ignoreContext = True template = ViewPageTemplateFile('form_templates/view_effectivesearch.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 IDossierSearch(interface.Interface): nodos = schema.TextLine(title=_(u'Dossier Number'), required=False) dostype = schema.Set(title=_(u'Type'), required=False, value_type=schema.Choice(values=[_(u'Lorem'), _(u'Ipsum')])) #subjects = ttitle = schema.TextLine(title=_(u'Title'), 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) class DossierSearchForm(form.Form): fields = field.Fields(IDossierSearch) ignoreContext = True template = ViewPageTemplateFile('form_templates/view_dossier_search.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 IQuestionSearch(interface.Interface): nodos = schema.TextLine(title=_(u'Question Number'), required=False) dostype = schema.Set(title=_(u'Type'), required=False, value_type=schema.Choice(values=[_(u'Lorem'), _(u'Ipsum')])) #subjects = ttitle = schema.TextLine(title=_(u'Title'), 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) class QuestionSearchForm(form.Form): fields = field.Fields(IQuestionSearch) ignoreContext = True template = ViewPageTemplateFile('form_templates/view_question_search.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_search_form(self): f = DocumentSearchForm(self.context, self.request) f.update() return f.render() def dossier_search_form(self): f = DossierSearchForm(self.context, self.request) f.update() return f.render() def question_search_form(self): f = QuestionSearchForm(self.context, self.request) f.update() return f.render()