dataflake.org

Home Documentation Software Old Stuff

SearchGroups index out of range bug (1 line fix included) (Resolved)

Request LDAP User Folder -- bug report -- by Nick Davis
Posted on Nov 5, 2007 10:31 am
Subscribe

Enter your email address to receive mail on every change to this issue.

Entries (Latest first)


  Resolve by Jens Vagelpohl on Nov 11, 2007 3:02 pm
  Thanks Nick, I checked in a change:

http://svn.dataflake.org/?view=rev&revision=1438
 

  Initial Request by Nick Davis on Nov 5, 2007 10:31 am
  SearchGroups blows up with an index out of range :
This happened to us all the time when clicking Groups tab in 'Users & Groups adminstration', and on certain group searches from sharing tab.
Platform Plone 2.5.3/Zope2.8.9.1/python2.3.5
PloneLDAP 1.0RC3 with bundled LDAPUserFolder 2.8 & LDAPMultiplugins 1.5

Module Products.PageTemplates.TALES, line 221, in evaluate
- URL: file:CMFPlone/skins/plone_forms/folder_localrole_form.pt
- Line 150, Column 20
- Expression: <PythonExpr group_search_submitted and gtool.searchForGroups( {request.get('group_search_param',''): request.get('group_search_term', '')}) or None> - Names:
{'container': <PloneSite at /uol>,
'context': <ATDocument at /uol/index_html>,
'default': <Products.PageTemplates.TALES.Default instance at 0xb71d324c>,
'here': <ATDocument at /uol/index_html>,
'loop': <Products.PageTemplates.TALES.SafeMapping object at 0xb446922c>,
'modules': <Products.PageTemplates.ZRPythonExpr._SecureModuleImporter instance at 0xb71f3e8c>,
'nothing': None,
'options': {'args': ()},
'repeat': <Products.PageTemplates.TALES.SafeMapping object at 0xb446922c>,
'request': <HTTPRequest, URL=https://swebdevnd51.cc.le.ac.uk/index_html/folder_localrole_form>,
'root': <Application at >,
'template': <FSPageTemplate at /uol/folder_localrole_form used for /uol/index_html>,
'traverse_subpath': [],
'user': <PloneUser 'nd51'>}
Module Products.PageTemplates.ZRPythonExpr, line 47, in __call__
- __traceback_info__: group_search_submitted and gtool.searchForGroups( {request.get('group_search_param',''): request.get('group_search_term', '')}) or None
Module Python expression "group_search_submitted and gtool.searchForGroups( {request.get('group_search_param',''): request.get('group_search_term', '')}) or None", line 1, in <expression>
Module Products.PlonePAS.tools.groups, line 267, in searchForGroups
Module Products.PluggableAuthService.PluggableAuthService, line 364, in searchGroups
Module Products.PloneLDAP.plugins.ldap, line 52, in enumerateGroups
Module Products.LDAPMultiPlugins.LDAPMultiPlugin, line 285, in enumerateGroups
Module Products.LDAPUserFolder.LDAPUserFolder, line 1093, in searchGroups
IndexError: list index out of range

line 1093 of LDAPUserFolder.py (from release 2.8) does this:

rec_dict[key] = val[0]

Unfortunately , sometimes val is empty. Some groups get returned by the previous line with a key 'Member' and an empty val. We are not interested in searching such groups anyway. This may be a bug somewhere else which I don't understand, but 1 line of defensive coding here will fix it.

Simply insert a : if val != []:
just before line 1093

(and obviously indent line 1093).

That's it! ;-)

This is a very important fix because with it, finally LDAP groups ACTUALLY WORK (for normal , non-superhuman Plone integrators) in Plone. ;-)

PloneLDAP 1.0RC3 works really well. A shame if it is let down by a bug in LDAPUserFolder (or a bug somewhere else that LDAPUserFolder doesn't gracefully handle)