return [""] + result class FormPulldownCriterion(PulldownMixin, common.FormCriterion, selection.ATSelectionCriterion): """A pulldown criterion""" archetype_name = "Pulldown Criterion" shortDesc = "Select one value" schema = selection.ATSelectionCriterion.schema.copy() + common.FormCriterion.schema.copy() schema.addField(field) del schema["operator"] schema["formFields"].vocabulary = common.makeVocabularyForFields(schema["value"]) common.registerCriterion(FormPulldownCriterion, orig=form_selection.FormSelectionCriterion) class FormPortalTypePulldownCriterion(PulldownMixin, common.FormCriterion, portaltype.ATPortalTypeCriterion): """A portal_types pulldown criterion""" archetype_name = "Portal Types Pulldown Criterion" shortDesc = "Select one content type" schema = portaltype.ATPortalTypeCriterion.schema.copy() + common.FormCriterion.schema.copy() schema.addField(field) schema["formFields"].vocabulary = common.makeVocabularyForFields(schema["value"]) common.registerCriterion(FormPortalTypePulldownCriterion, orig=form_selection.FormPortalTypeCriterion)
from Products.ATContentTypes.criteria import list as list_ from collective.formcriteria.criteria import common class FormListCriterion( common.FormCriterion, list_.ATListCriterion): __doc__ = list_.ATListCriterion.__doc__ schema = list_.ATListCriterion.schema.copy( ) + common.FormCriterion.schema.copy() schema['value'].widget.hide_form_label = True schema['formFields'].vocabulary = common.makeVocabularyForFields( schema['value'], schema['operator']) common.registerCriterion( FormListCriterion, orig=list_.ATListCriterion)
from Products.Archetypes import atapi from Products.ATContentTypes.content import schemata from Products.ATContentTypes.criteria import sort from collective.formcriteria import interfaces from collective.formcriteria.criteria import common class FormSortCriterion( common.FormCriterion, sort.ATSortCriterion): __doc__ = sort.ATSortCriterion.__doc__ schema = atapi.Schema(( schemata.ATContentTypeSchema['title'], schemata.ATContentTypeSchema['description'], )) + sort.ATSortCriterion.schema.copy() shortDesc = 'Sort results' def getCriteriaItems(self): """Only use this sort if it is the default or is specified""" topic = Acquisition.aq_parent(Acquisition.aq_inner(self)) if not interfaces.IFormTopic.providedBy(topic) or ( self.Field() != 'unsorted' and ( self.getId() in self.REQUEST or Acquisition.aq_base(self) is Acquisition.aq_base( topic.listSortCriteria()[0]))): return super(FormSortCriterion, self).getCriteriaItems() return () common.registerCriterion(FormSortCriterion, orig=sort.ATSortCriterion)
from Products.ATContentTypes.criteria import selection from Products.ATContentTypes.criteria import portaltype from Products.ATContentTypes.criteria import reference from collective.formcriteria.criteria import common class FormSelectionCriterion(common.FormCriterion, selection.ATSelectionCriterion): __doc__ = selection.ATSelectionCriterion.__doc__ schema = selection.ATSelectionCriterion.schema.copy() + common.FormCriterion.schema.copy() schema["value"].widget.hide_form_label = True schema["formFields"].vocabulary = common.makeVocabularyForFields(schema["value"], schema["operator"]) common.registerCriterion(FormSelectionCriterion, orig=selection.ATSelectionCriterion) class FormPortalTypeCriterion(common.FormCriterion, portaltype.ATPortalTypeCriterion): __doc__ = portaltype.ATPortalTypeCriterion.__doc__ schema = portaltype.ATPortalTypeCriterion.schema.copy() + common.FormCriterion.schema.copy() schema["value"].widget.hide_form_label = True schema["formFields"].vocabulary = common.makeVocabularyForFields(schema["value"]) common.registerCriterion(FormPortalTypeCriterion, orig=portaltype.ATPortalTypeCriterion) class FormReferenceCriterion(common.FormCriterion, reference.ATReferenceCriterion): __doc__ = reference.ATReferenceCriterion.__doc__
from Products.ATContentTypes.criteria import relativepath from collective.formcriteria.criteria import common class FormRelativePathCriterion( common.FormCriterion, relativepath.ATRelativePathCriterion): __doc__ = relativepath.ATRelativePathCriterion.__doc__ schema = relativepath.ATRelativePathCriterion.schema.copy( ) + common.FormCriterion.schema.copy() schema['formFields'].vocabulary = common.makeVocabularyForFields( schema['relativePath'], schema['recurse']) def Recurse(self, **kw): return self.getFormFieldValue('recurse', **kw) common.registerCriterion(FormRelativePathCriterion, orig=relativepath.ATRelativePathCriterion)
from Products.ATContentTypes.criteria import simplestring from collective.formcriteria.criteria import common class FormSimpleStringCriterion(common.FormCriterion, simplestring.ATSimpleStringCriterion): __doc__ = simplestring.ATSimpleStringCriterion.__doc__ schema = simplestring.ATSimpleStringCriterion.schema.copy() + common.FormCriterion.schema.copy() schema["value"].widget.hide_form_label = True schema["formFields"].vocabulary = common.makeVocabularyForFields(schema["value"]) common.registerCriterion(FormSimpleStringCriterion, orig=simplestring.ATSimpleStringCriterion)
# conversion for the value returned by the widget so we have # to reproduce it here. if not value: value = None elif not isinstance(value, DateTime): try: # Convert value to non-ISO8601 representation (YYYY/MM/DD). # DateTime uses local timezone for non-ISO8601 strings, # otherwise it uses timezone naive conversion. # see http://dev.plone.org/plone/ticket/10141 value = DateTime(value.replace('-', '/', 2)) except DateTime.DateTimeError: value = None return value def getStart(self, **kw): return self.getDateTimeFormFieldValue('start', **kw) def getRawStart(self, **kw): return self.getDateTimeFormFieldValue('start', raw=True, **kw) def getEnd(self, **kw): return self.getDateTimeFormFieldValue('end', **kw) def getRawEnd(self, **kw): return self.getDateTimeFormFieldValue('end', raw=True, **kw) common.registerCriterion( FormDateRangeCriterion, orig=daterange.ATDateRangeCriterion)
from Products.ATContentTypes.criteria import date from collective.formcriteria.criteria import common class FormDateCriterion( common.FormCriterion, date.ATDateCriteria): __doc__ = date.ATDateCriteria.__doc__ schema = date.ATDateCriteria.schema.copy( ) + common.FormCriterion.schema.copy() schema['formFields'].vocabulary = common.makeVocabularyForFields( schema['value'], schema['dateRange'], schema['operation']) common.registerCriterion( FormDateCriterion, orig=date.ATDateCriteria)
from Products.ATContentTypes.criteria import simpleint from collective.formcriteria.criteria import common class FormSimpleIntCriterion( common.FormCriterion, simpleint.ATSimpleIntCriterion): __doc__ = simpleint.ATSimpleIntCriterion.__doc__ schema = simpleint.ATSimpleIntCriterion.schema.copy( ) + common.FormCriterion.schema.copy() schema['value'].widget.hide_form_label = True schema['formFields'].vocabulary = common.makeVocabularyForFields( schema['value'], schema['value2'], schema['direction']) def Value2(self, **kw): return self.getFormFieldValue('value2', **kw) def getRawValue2(self, **kw): return self.getFormFieldValue('value2', raw=True, **kw) def getDirection(self, **kw): return self.getFormFieldValue('direction', **kw) common.registerCriterion( FormSimpleIntCriterion, orig=simpleint.ATSimpleIntCriterion)
from Products.ATContentTypes.criteria import path from collective.formcriteria.criteria import common class FormPathCriterion( common.FormCriterion, path.ATPathCriterion): __doc__ = path.ATPathCriterion.__doc__ schema = path.ATPathCriterion.schema.copy( ) + common.FormCriterion.schema.copy() schema['value'].widget.hide_form_label = True schema['formFields'].vocabulary = common.makeVocabularyForFields( schema['value'], schema['recurse']) def Recurse(self, **kw): return self.getFormFieldValue('recurse', **kw) common.registerCriterion( FormPathCriterion, orig=path.ATPathCriterion)
if cmf_ifaces.IContentish.providedBy(parent): return parent class FormContextCriterion(selection.FormSelectionCriterion): __doc__ = IContextCriterion.__doc__ interface.implements(IContextCriterion) archetype_name = 'Context Criterion' shortDesc = 'Values will be taken from the context' schema = selection.FormSelectionCriterion.schema.copy() schema['value'].widget.__dict__.update( visible=dict(view='invisible', edit='invisible')) def Value(self, **kw): catalog = getToolByName(self, 'portal_catalog') context = ICriteriaContext(self) wrapper = component.queryMultiAdapter( (context, catalog), IIndexableObject) if wrapper is None: wrapper = context value = getattr(wrapper, self.Field()) if safe_callable(value): value = value() return value common.registerCriterion( FormContextCriterion, indices=criteria.ALL_INDICES)
'maxlength': '255', 'blurrable': True, 'show_form_help': True, }) def process_form(self, *args, **kw): result = super(CommaWidget, self).process_form( *args, **kw) if not isinstance(result, tuple): return result value, mutator_kw = result value = [item.strip() for item in value.split(',')] return value, mutator_kw class FormCommaCriterion(list_.FormListCriterion): """A comma separated criterion""" archetype_name = 'Comma Separated Criterion' shortDesc = 'Enter comma separated values' schema = list_.FormListCriterion.schema.copy() schema['value'].widget = CommaWidget( label=schema['value'].widget.label, description=u'Values, separated by commas.', hide_form_label=True) common.registerCriterion( FormCommaCriterion, list_.FormListCriterion)
from Products.ATContentTypes.criteria import boolean from collective.formcriteria.criteria import common class FormBooleanCriterion( common.FormCriterion, boolean.ATBooleanCriterion): __doc__ = boolean.ATBooleanCriterion.__doc__ schema = boolean.ATBooleanCriterion.schema.copy( ) + common.FormCriterion.schema.copy() schema['bool'].widget.hide_form_label = True schema['formFields'].vocabulary = common.makeVocabularyForFields( schema['bool']) common.registerCriterion( FormBooleanCriterion, orig=boolean.ATBooleanCriterion)