基于表达式将组分配给用户。

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.txt

plone站点

  • 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()

插件设置

>>> 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公司

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java提供了大量的Quartz工作线程   来自SOAPException的java抛出超时异常   java通过REST web服务同步PostgreSQL过程调用   java Hibernate:在关联表中设置值   javaimapidlechanneladapterjavax。邮政AuthenticationFailedException:[警报]同时连接太多   JavaApacheStorm:stormkafkamonitor脚本引发异常   java将jar链接到战争   Matlab与Java的集成方法   安卓公司。谷歌。ads.AdView未能实例化java。lang.ClassNotFoundException:org。json。JSONException   “String forecastStr=mForecastAdapter.getItem(position);”行中出现java错误阳光工程   java如何将Mono中的列表属性作为流量进行操作?   java DecimalFormat类不必要地给出整数   java@IfProfileValue两个spring配置文件   java如何使用SwingWorker创建多线程?   java从扩展SwingWorker的内部类触发事件   java二叉树高度实现