def test_user_related_modification(self): voc_inst = AssignedUsersWithDeactivatedVocabulary() voc_list = [(t.value, t.title) for t in voc_inst(self.imail)] self.assertListEqual(voc_list, [('__empty_string__', u'Empty value'), ('agent', u'Fred Agent'), ('encodeur', u'Jean Encodeur'), ('lecteur', u'Jef Lecteur'), ('dirg', u'Maxime DG'), ('chef', u'Michel Chef'), ('scanner', u'Scanner'), ('agent1', u'Stef Agent'), ('test-user', u'test-user (Désactivé)')]) # we change a user property member = api.user.get(userid='chef') member.setMemberProperties({'fullname': 'Michel Chef 2'}) # we simulate the user form change event zope.event.notify( ConfigurationChangedEvent( UserDataConfiglet(self.portal, self.portal.REQUEST), {})) voc_list = [(t.value, t.title) for t in voc_inst(self.imail)] self.assertListEqual(voc_list, [('__empty_string__', u'Empty value'), ('agent', u'Fred Agent'), ('encodeur', u'Jean Encodeur'), ('lecteur', u'Jef Lecteur'), ('dirg', u'Maxime DG'), ('chef', u'Michel Chef 2'), ('scanner', u'Scanner'), ('agent1', u'Stef Agent'), ('test-user', u'test-user (Désactivé)')]) # we change the activated services set_registry_organizations( get_registry_organizations()[0:1]) # only keep Direction générale api.group.remove_user( groupname='createurs_dossier', username='******') # remove agent from global group voc_list = [(t.value, t.title) for t in voc_inst(self.imail)] self.assertListEqual(voc_list, [('__empty_string__', u'Empty value'), ('encodeur', u'Jean Encodeur'), ('dirg', u'Maxime DG'), ('chef', u'Michel Chef 2'), ('scanner', u'Scanner'), ('agent', u'Fred Agent (Désactivé)'), ('lecteur', u'Jef Lecteur (Désactivé)'), ('agent1', u'Stef Agent (Désactivé)'), ('test-user', u'test-user (Désactivé)')]) # wrong configuration change zope.event.notify(ConfigurationChangedEvent(self.portal, {}))
class SpreedlySettings(ControlPanelForm): zope.interface.implements(ISpreedlyLoginSettings) id = u"SpreedlyLoginSettingsForm" form_name = u"Spreedly Credentials Configuration" description = u"""""" form_fields = zope.formlib.form.FormFields(ISpreedlyLoginSettings) @zope.formlib.form.action(u'Save', name=u'save') def handle_edit_action(self, action, data): """ When save button pressed, check for errors, attempt to connect to API, and throw error if key wrong, otherwise, continue. """ plone.protect.CheckAuthenticator(self.request) self.context.manage_changeProperties(**data) try: connect = spreedlycore.APIConnection(data['spreedly_login'], data['spreedly_secret']) gateway = connect.gateways() except urllib2.HTTPError, e: IStatusMessage(self.request).addStatusMessage( _(u"The credentials that were provided are incorrect. " "SpreedlyCore.com returned " + unicode(e)), "error") self.context.REQUEST.RESPONSE.redirect("@@spreedly_settings") return zope.formlib.form.applyChanges(self.context, self.form_fields, data, self.adapters) zope.event.notify(ConfigurationChangedEvent(self, data)) self.status = "Changes saved." self.context.REQUEST.RESPONSE.redirect("@@spreedly_settings")
def handle_edit_action(self, action, data): CheckAuthenticator(self.request) if form.applyChanges(self.context, self.form_fields, data, self.adapters): self.status = __("Changes saved.") notify(ConfigurationChangedEvent(self, data)) self._on_save(data) else: self.status = __("No changes made.")
def test_pm_GetMemberInfo(self): """Test portal_membership.getMemberInfo as is it monkeypatched to add caching.""" pm = self.portal.portal_membership self.changeUser("pmManager") self.assertEqual( pm.getMemberInfo("pmManager")["fullname"], 'M. PMManager') self.member.setMemberProperties({"fullname": "M. PMManager New"}) # still not changed as cache was not invalidated self.assertEqual( pm.getMemberInfo("pmManager")["fullname"], 'M. PMManager') notify(ConfigurationChangedEvent(self.portal, self.request)) self.assertEqual( pm.getMemberInfo("pmManager")["fullname"], 'M. PMManager New')
def handleSave(self, action): CheckAuthenticator(self.request) data, errors = self.extractData() # extra validation for email self.validate_email(action, data) if action.form.widgets.errors: self.status = self.formErrorsMessage return if self.applyChanges(data): IStatusMessage(self.request).addStatusMessage(self.successMessage, type='info') notify(ConfigurationChangedEvent(self, data)) self._on_save(data) else: IStatusMessage(self.request).addStatusMessage( self.noChangesMessage, type='info') self.request.response.redirect(self.action())
def __call__(self): """Perform the update and redirect if necessary, or render the page """ postback = True context = aq_inner(self.context) form = self.request.form submitted = form.get('form.submitted', False) save_button = form.get('form.button.Save', None) is not None cancel_button = form.get('form.button.Cancel', None) is not None type_id = form.get('old_type_id', None) if submitted and not cancel_button: if type_id: portal_types = getToolByName(self.context, 'portal_types') portal_repository = getToolByName(self.context, 'portal_repository') portal_properties = getToolByName(self.context, 'portal_properties') site_properties = getattr(portal_properties, 'site_properties') fti = getattr(portal_types, type_id) # Set FTI properties addable = form.get('addable', False) allow_discussion = form.get('allow_discussion', False) fti.manage_changeProperties( global_allow=bool(addable), allow_discussion=bool(allow_discussion)) version_policy = form.get('versionpolicy', "off") if version_policy != self.current_versioning_policy(): newpolicy = [ p for p in VERSION_POLICIES if p["id"] == version_policy ][0] versionable_types = list( portal_repository.getVersionableContentTypes()) if not newpolicy["policy"]: if type_id in versionable_types: versionable_types.remove(type_id) else: if type_id not in versionable_types: versionable_types.append(type_id) for policy in portal_repository.listPolicies(): policy_id = policy.getId() if policy_id in newpolicy["policy"]: portal_repository.addPolicyForContentType( type_id, policy_id) else: portal_repository.removePolicyFromContentType( type_id, policy_id) portal_repository.setVersionableContentTypes( versionable_types) searchable = form.get('searchable', False) blacklisted = list( site_properties.getProperty('types_not_searched')) if searchable and type_id in blacklisted: blacklisted.remove(type_id) elif not searchable and type_id not in blacklisted: blacklisted.append(type_id) site_properties.manage_changeProperties(types_not_searched = \ blacklisted) if type_id == 'Link': redirect_links = form.get('redirect_links', False) site_properties.manage_changeProperties(redirect_links = \ redirect_links) # Update workflow if self.have_new_workflow() and \ form.get('form.workflow.submitted', False) and \ save_button: if self.new_workflow_is_different(): new_wf = self.new_workflow() if new_wf == '[none]': chain = () elif new_wf == '(Default)': chain = new_wf else: chain = (new_wf, ) state_map = dict([(s['old_state'], s['new_state']) for s in \ form.get('new_wfstates', [])]) if state_map.has_key('[none]'): state_map[None] = state_map['[none]'] del state_map['[none]'] if type_id: type_ids = (type_id, ) else: wt = getToolByName(self.context, 'portal_workflow') tt = getToolByName(self.context, 'portal_types') nondefault = [ info[0] for info in wt.listChainOverrides() ] type_ids = [ type for type in tt.listContentTypes() if type not in nondefault ] wt.setChainForPortalTypes(type_ids, wt.getDefaultChain()) wt.setDefaultChain(','.join(chain)) chain = '(Default)' remap_workflow(context, type_ids=type_ids, chain=chain, state_map=state_map) data = {'workflow': new_wf} notify(ConfigurationChangedEvent(self, data)) else: portal_workflow = getToolByName(context, 'portal_workflow') if self.new_workflow() == '(Default)': # The WorkflowTool API can not handle this sanely cbt = portal_workflow._chains_by_type if cbt.has_key(type_id): del cbt[type_id] else: portal_workflow.setChainForPortalTypes( (type_id, ), self.new_workflow()) self.request.response.redirect('%s/@@types-controlpanel?\ type_id=%s' % (context.absolute_url(), type_id)) postback = False elif cancel_button: self.request.response.redirect(self.context.absolute_url() + \ '/plone_control_panel') postback = False if postback: return self.template()
def handle_edit_action(self, action, data): CheckAuthenticator(self.request) if applyChanges(self.context, self.form_fields, data, self.adapters): notify(ConfigurationChangedEvent(self, data)) return self._on_save(data)