我正在使用products.sqlalchemypas-1.0-py2.6.egg来验证MSSQL表中的用户。身份验证按预期工作,但现在我正在尝试实现组插件 从不同的表中获取组。发生了什么事情,当我正在尝试登录它给我的错误说AttributeError:getGroupsForPrincipal。
错误回溯是..
2012-02-21T15:33:14 INFO Zope准备好处理请求
2012-02-21T15:39:25 ERROR Zope.SiteErrorLog 1329838765.580.598770330561 http://localhost:8060/dev/login_form
Traceback (innermost last):
Module ZPublisher.Publish, line 115, in publish
Module ZPublisher.BaseRequest, line 596, in traverse
Module Products.PluggableAuthService.PluggableAuthService, line 235, in validate
Module Products.PluggableAuthService.PluggableAuthService, line 735, in _findUser
Module Products.PluggableAuthService.PluggableAuthService, line 668, in _getGroupsForPrincipal
AttributeError: getGroupsForPrincipal
我在plugin.py中的定义是......
def getGroupsForPrincipal(self, principal=getSecurityManager().getUser().getId(),request=None):
"Getting groups from SIMS"
import pdb; pdb.set_trace()
groups = []
results = self.simsGroupForUser(username=principal)
for row in results.dictionaries():
group = row.get('group')
groups.append(group)
return groups
不知道为什么它无法在plugin.py中访问此方法但是有一个implatemented块我在其中定义了这个接口来实现在我的acl_user pas对象中显示组接口。
[加入] 我试图在调试器中导入我的插件并试图达到这个方法并且有相同的错误,所以我不知道我是否需要定义任何具体来在我的pas中选择此方法。我确实在我的implements类中定义了inscluslement IGroupsPlugin。
任何评论都是一如既往的好帮助。
答案 0 :(得分:0)
我不认为您的方法定义符合您的预期。 principal=getSecurityManager().getUser().getId()
将在导入时计算默认参数,而不是在方法执行时计算默认参数。
答案 1 :(得分:0)
刚发现我的文件有错误的缩进,这就是为什么它给出了属性错误。感谢您的所有时间和意见。