def edit(self, cid, **kwargs): """ See IFacetedCriterionHandler """ criteria = ICriteria(self.context) widget = criteria.widget(cid=cid) criterion = criteria.get(cid) if kwargs.pop('__new__', False): criterion = criterion.__class__(cid='c0') widget = widget(self.context, self.request, criterion) wid = kwargs.pop('widget', None) properties = self.extractData(widget, **kwargs) if wid: properties['widget'] = wid update = {} for prop, value in properties.items(): form_key = 'faceted.%s.%s' % (cid, prop) if form_key not in kwargs and value is None: continue update[prop] = value if update: criteria.edit(cid, **update) if widget.hidden: notify(FacetedGlobalSettingsChangedEvent(self.context)) elif set(['hidden', 'operator']).intersection(update.keys()): notify(FacetedGlobalSettingsChangedEvent(self.context)) return self._redirect('Changes saved')
def _updateFacetedFilters(self): """Update vocabulary used for "Taken over by". Make sure the default for contacts 'c5' widget is not a list.""" logger.info( "Updating faceted filter \"Taken over by\" for every MeetingConfigs..." ) for cfg in self.tool.objectValues('MeetingConfig'): obj = cfg.searches.searches_items # update vocabulary for relevant filters criteria = ICriteria(obj) criteria.edit( 'c12', **{ 'vocabulary': 'Products.PloneMeeting.vocabularies.creatorswithnobodyforfacetedfiltervocabulary' }) criteria.edit( 'c27', **{ 'vocabulary': 'Products.PloneMeeting.vocabularies.associatedgroupsvocabulary' }) logger.info('Done.') logger.info("Updating faceted filter \"Defined in\" for 'c5' " "criterion of contacts/orgs-searches...") obj = self.portal.contacts.get('orgs-searches') # as default is not correct (a string instead a list, we can not use edit or it fails to validate) criteria = ICriteria(obj) criterion = criteria.get('c5') criterion.default = u'collective.contact.plonegroup.interfaces.IPloneGroupContact' logger.info('Done.')
def _updateFacetedFilters(self): """Update vocabulary used for "Taken over by".""" logger.info( "Updating faceted filter \"Taken over by\" for every MeetingConfigs..." ) for cfg in self.tool.objectValues('MeetingConfig'): criteria = ICriteria(cfg.searches.searches_items) criteria.edit( 'c12', **{ 'vocabulary': 'Products.PloneMeeting.vocabularies.creatorswithnobodyforfacetedfiltervocabulary' }) logger.info('Done.')
def edit(self, cid, **kwargs): """ See IFacetedCriterionHandler """ kwargs = self._request_form(kwargs) criteria = ICriteria(self.context) widget = criteria.widget(cid=cid) fields = widget.edit_schema.keys()[:] update = {} for prop in fields: new_value = kwargs.get(prop, None) if new_value is None: continue update[prop] = new_value if update: criteria.edit(cid, **update) if widget.hidden: notify(FacetedGlobalSettingsChangedEvent(self.context)) elif set(['hidden', 'operator']).intersection(update.keys()): notify(FacetedGlobalSettingsChangedEvent(self.context)) return self._redirect('Changes saved')