Bladeren bron

[useradmin] Import any group name from LDAP

urllib.quote_plus was replaced with urllib.quote when quoting deletion.
This is because a URL is being constructed, not a query string.
abec 13 jaren geleden
bovenliggende
commit
21f222c

+ 3 - 4
apps/useradmin/src/useradmin/forms.py

@@ -135,10 +135,9 @@ class AddLdapGroupForm(forms.Form):
   name = forms.RegexField(
       label="Name",
       max_length=64,
-      regex='^%s$' % (get_groupname_re_rule(),),
-      help_text=_("Required. 30 characters or fewer. May only contain letters, "
-                "numbers, hyphens or underscores."),
-      error_messages={'invalid': _("Whitespaces and ':' not allowed") })
+      regex='^%s$' % get_groupname_re_rule(),
+      help_text=_("Required. 30 characters or fewer."),
+      error_messages={'invalid': _("30 characters or fewer.") })
   dn = forms.BooleanField(label=_("Distinguished name"),
                           help_text=_("Whether or not the group should be imported by "
                                     "distinguished name."),

+ 1 - 1
apps/useradmin/src/useradmin/ldap_access.py

@@ -141,7 +141,7 @@ class LdapConnection(object):
 
     ldap_result_id = self.ldap_handle.search(base_dn, scope, ldap_filter)
     result_type, result_data = self.ldap_handle.result(ldap_result_id)
-    if result_type == ldap.RES_SEARCH_RESULT and result_data[0][0] is not None:
+    if result_data and result_type == ldap.RES_SEARCH_RESULT:
       data = result_data[0][1]
       group_info = { 'name': data[group_name_attr][0] }
 

+ 1 - 1
apps/useradmin/src/useradmin/templates/list_groups.mako

@@ -58,7 +58,7 @@ ${layout.menubar(section='groups', _=_)}
       <tr class="tableRow" data-search="${group.name}${', '.join([group_user.username for group_user in group.user_set.all()])}">
         %if user.is_superuser:
           <td data-row-selector-exclude="true">
-              <div class="hueCheckbox groupCheck" data-group="${group.name}" data-confirmation-url="${ url('useradmin.views.delete_group', name=urllib.quote_plus(group.name))}" data-row-selector-exclude="true"></div>
+              <div class="hueCheckbox groupCheck" data-group="${group.name}" data-confirmation-url="${ url('useradmin.views.delete_group', name=urllib.quote(group.name))}" data-row-selector-exclude="true"></div>
           </td>
         %endif
         <td>

+ 3 - 2
apps/useradmin/src/useradmin/tests.py

@@ -467,8 +467,9 @@ def test_add_ldap_group():
   response = c.post(URL, dict(name='TestUsers', password1='test', password2='test'))
   assert_true('/useradmin/groups' in response['Location'])
 
-  response = c.post(URL, dict(name='bad_name', password1='test', password2='test'))
-  assert_true('Could not' in response.context['form'].errors['name'][0])
+  # Test with space
+  response = c.post(URL, dict(name='Test Administrators', password1='test', password2='test'))
+  assert_true('/useradmin/groups' in response['Location'])
 
   response = c.post(URL, dict(name='toolongnametoolongnametoolongname',
                               password1='test', password2='test'))

+ 1 - 1
desktop/core/src/desktop/lib/django_util.py

@@ -44,7 +44,7 @@ MAKO = 'mako'
 
 # This is what Debian allows. See chkname.c in shadow.
 USERNAME_RE_RULE = "[^-:\s][^:\s]*"
-GROUPNAME_RE_RULE = "[\w-]+"
+GROUPNAME_RE_RULE = "^.{,30}$"
 
 class Encoder(simplejson.JSONEncoder):
   """