基于表达式将组分配给用户。
pas.plugins.groupassigner的Python项目详细描述
简介
The plugin creates a virtual group and helps to assign this group to users by evaluation of a TALES expression.
安装
Buildout
See docs/INSTALL.txtplone站点
- Go in the site acl_users then add “Group Assigner”
- Set the properties: group id, group title and the condition (see below for the meaning of ‘debug’)
- Activate all the functionalities provided by the plugin
注释
The expression is based only on principal methods and attributes. It is not possible to assign the group on context base.
Variable available are:
principal portal nothing modules从“principal”可以使用“getproperty”方法在 表达。例如:
python: principal.getProperty(‘email’).split(‘@’)[-1] in [‘reflab.com’,]要分配多个组,必须为每个组添加一个插件。
要缓存插件,请添加ramcache管理器并将插件分配给他。 如果插件被缓存,请记住在更改时使缓存失效 财产。
您可以激活“调试”属性来记录 表达式(在本例中不使用缓存)。
其他信息
Questions and comments to riccardo@reflab.com
Report bugs at riccardo@reflab.com
Code repository: http://svn.plone.org/svn/collective/PASPlugins/pas.plugins.groupassigner
变更历史
1.0(2010-07-02)
- 发布的插件
详细文档
pas.plugins.groupassigner的测试
测试设置
>>> from Testing.ZopeTestCase import user_password
>>> from Products.Five.testbrowser import Browser
>>> browser = Browser()
>>> from Testing.ZopeTestCase import user_password >>> from Products.Five.testbrowser import Browser >>> browser = Browser()
插件设置
>>> acl_users_url = "%s/acl_users" % self.portal.absolute_url() >>> browser.addHeader('Authorization', 'Basic %s:%s' % ('portal_owner', user_password))>>> self.portal.acl_users.userFolderAddUser('test_user_2_', 'secret', ['Member'], []) >>> u1 = self.portal.acl_users.getUserById('test_user_1_') >>> gtool = self.portal.portal_groups >>> gtool.addGroup('group1', ()) True
pas.plugins.groupassigner应该在可安装插件列表中:
>>> browser.open("%s/manage_main" % acl_users_url) >>> browser.url 'http://nohost/plone/acl_users/manage_main' >>> form = browser.getForm(index=0) >>> select = form.getControl(name=':action')>>> 'Group Assigner' in select.displayOptions True
我们可以选择:
>>> select.getControl('Group Assigner').click() >>> select.displayValue ['Group Assigner'] >>> select.value ['manage_addProduct/pas.plugins.groupassigner/manage_add_groupassigner_form']
我们将“组分配者”添加到acl用户:
>>> from pas.plugins.groupassigner.plugin import GroupAssigner >>> assigner = GroupAssigner('group_assigner_test', 'Group Assigner') >>> assigner.group = 'group1' >>> assigner.condition = "python: 'reflab.com' in principal.getProperty('email')" >>> self.portal.acl_users['group_assigner_test'] = assigner >>> assigner = self.portal.acl_users['group_assigner_test']
现在测试:
>>> assigner.getGroupsForPrincipal(u1) () >>> assigner.getGroupMembers('group1') () >>> u1.setProperties(email='u1@reflab.com') >>> assigner.getGroupsForPrincipal(u1) ('group1',) >>> assigner.getGroupMembers('group1') ()>>> assigner.enumerateGroups() [{'pluginid': 'group_assigner_test', 'title': 'Group Assigner', 'id': 'group1', 'groupid': 'group1'}] >>> assigner.enumerateGroups(id='group1') [{'pluginid': 'group_assigner_test', 'title': 'Group Assigner', 'id': 'group1', 'groupid': 'group1'}] >>> assigner.enumerateGroups(id='groupX') []
贡献者
Riccardo Lemmi,reflab公司