使用Plone来管理用户组
在Plone网站设置的“用户和组”选项里点击“组”标签,进入组管理界面。这个界面和用户管理界面相仿,通过这个界面,可以管理网站的用户组,添加新组等。
下面有一个列表显示所有的用户组,和用户列表类似,有组名,扮演的角色,删除组三列。
上一篇文章里说过,有三个组是默认创建的,管理员组,旗下用户具有管理员角色;具有审核者角色的组;还有已认证组,这是一个虚拟组,因为网站里面注册过的任何一个用户都属于已认证组的。这也就是说如果给已认证用户组分配一个角色的话,网站的所有成员都会拥有这个角色的权限。
给组分配的角色会对组里面的所有成员和组有效。要想给组内某已特定的成员或组分配权限的话,可以在文件夹里的“共享”标签页设定。
添加一个新组
在“组管理”下点击“添加新组”按钮,“创建一个组”的灯箱就会出现,只有名字项是必填项,提交以后组名不可更改。接下来还可以填写标题,描述,Email。 老版本的Plone在这里不是以灯箱形式出现的,而是一个页面,包含三个标签页:组成员,组属性,组面板。创建组就在组属性下。 按照提示,名字只能是英文字母,后面的三个选项没有要求。但在实际使用中发现,标题也只能是英文字母,如果带中文的话,在新建用户时会出错。 查看出错信息,发现在生成创建新用户表单时,会对所有组的名字和标题进行从ascii到unicode的解码。若有中文的话,就出现解码错误。 经过查找定位,最终锁定在文件 plone.app.form-2.0-py2.6.egg/plone/app/form/widgets/multicheckboxwidget.py 。 文件里MultiCheckBoxWidget的成员函数renderItem在调用 zope.app.form.browser.widget.py 中的renderElement方法时,没有考虑参数value和contents中可能出现的非asciii码内容。 value对应的就是组的标题,contents对应就是组的描述。 修改这两个参数的输入值,使用utf-8解码,如下:13 def renderItem(self, index, text, value, name, cssClass): 14 id = '%s.%s' % (name, index) 15 elem = renderElement('input', 16 type="checkbox", 17 cssClass=cssClass, 18 name=name, 19 id=id, 20 value=unicode(value,"utf-8")) 21 22 label = renderElement('label', 23 extra= u"for=%s" % id, 24 contents=unicode(text,"utf-8"))重启Plone实例,现在就可以注册新用户了。