From d95b47232de2e94e5523337e0f6b744e49061857 Mon Sep 17 00:00:00 2001 From: Kevin McCarthy Date: Thu, 27 Sep 2007 11:27:33 -0700 Subject: patch queue: group_users_use_dns.patch --- ipa-server/ipa-gui/ipagui/controllers.py | 27 +++-- ipa-server/ipa-gui/ipagui/forms/group.py | 4 +- ipa-server/ipa-gui/ipagui/helpers/ipahelper.py | 9 ++ .../ipa-gui/ipagui/static/javascript/ipautil.js | 8 ++ .../ipa-gui/ipagui/templates/groupeditform.kid | 129 +++++++++++++-------- ipa-server/ipa-gui/ipagui/templates/master.kid | 1 + .../ipa-gui/ipagui/templates/userlistajax.kid | 32 +++-- 7 files changed, 139 insertions(+), 71 deletions(-) create mode 100644 ipa-server/ipa-gui/ipagui/helpers/ipahelper.py create mode 100644 ipa-server/ipa-gui/ipagui/static/javascript/ipautil.js diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py index 14213461..3dc2b29b 100644 --- a/ipa-server/ipa-gui/ipagui/controllers.py +++ b/ipa-server/ipa-gui/ipagui/controllers.py @@ -17,6 +17,7 @@ from turbogears import identity import ipa.config import ipa.ipaclient import ipa.user +from ipa.entity import utf8_encode_values import xmlrpclib import forms.user import forms.group @@ -534,12 +535,13 @@ class Root(controllers.RootController): # failed_adds = [] try: - uidadds = kw.get('uidadd') - if uidadds != None: - if not(isinstance(uidadds,list) or isinstance(uidadds,tuple)): - uidadds = [uidadds] - failed_adds = client.add_users_to_group(uidadds, kw.get('cn')) - kw['uidadd'] = failed_adds + dnadds = kw.get('dnadd') + if dnadds != None: + if not(isinstance(dnadds,list) or isinstance(dnadds,tuple)): + dnadds = [dnadds] + failed_adds = client.add_members_to_group( + utf8_encode_values(dnadds), kw.get('cn')) + kw['dnadd'] = failed_adds except ipaerror.IPAError, e: turbogears.flash("User update failed: " + str(e)) return dict(form=group_edit_form, group=kw, members=member_dicts, @@ -550,12 +552,13 @@ class Root(controllers.RootController): # failed_dels = [] try: - uiddels = kw.get('uiddel') - if uiddels != None: - if not(isinstance(uiddels,list) or isinstance(uiddels,tuple)): - uiddels = [uiddels] - failed_dels = client.remove_users_from_group(uiddels, kw.get('cn')) - kw['uiddel'] = failed_dels + dndels = kw.get('dndel') + if dndels != None: + if not(isinstance(dndels,list) or isinstance(dndels,tuple)): + dndels = [dndels] + failed_dels = client.remove_members_from_group( + utf8_encode_values(dndels), kw.get('cn')) + kw['dndel'] = failed_dels except ipaerror.IPAError, e: turbogears.flash("User update failed: " + str(e)) return dict(form=group_edit_form, group=kw, members=member_dicts, diff --git a/ipa-server/ipa-gui/ipagui/forms/group.py b/ipa-server/ipa-gui/ipagui/forms/group.py index 20706eb6..d3cfda6f 100644 --- a/ipa-server/ipa-gui/ipagui/forms/group.py +++ b/ipa-server/ipa-gui/ipagui/forms/group.py @@ -11,7 +11,7 @@ class GroupFields(): group_orig = widgets.HiddenField(name="group_orig") member_data = widgets.HiddenField(name="member_data") - uid_to_cn_json = widgets.HiddenField(name="uid_to_cn_json") + dn_to_cn_json = widgets.HiddenField(name="dn_to_cn_json") class GroupNewValidator(validators.Schema): cn = validators.String(not_empty=True) @@ -48,7 +48,7 @@ class GroupEditForm(widgets.Form): fields = [GroupFields.gidnumber, GroupFields.description, GroupFields.cn_hidden, GroupFields.editprotected_hidden, GroupFields.group_orig, GroupFields.member_data, - GroupFields.uid_to_cn_json] + GroupFields.dn_to_cn_json] validator = GroupEditValidator() diff --git a/ipa-server/ipa-gui/ipagui/helpers/ipahelper.py b/ipa-server/ipa-gui/ipagui/helpers/ipahelper.py new file mode 100644 index 00000000..9ea6b48a --- /dev/null +++ b/ipa-server/ipa-gui/ipagui/helpers/ipahelper.py @@ -0,0 +1,9 @@ +import re + +def javascript_string_escape(input): + """Escapes the ' " and \ characters in a string so + it can be embedded inside a dynamically generated string.""" + + return re.sub(r'[\'\"\\]', + lambda match: "\\%s" % match.group(), + input) diff --git a/ipa-server/ipa-gui/ipagui/static/javascript/ipautil.js b/ipa-server/ipa-gui/ipagui/static/javascript/ipautil.js new file mode 100644 index 00000000..4aa74f37 --- /dev/null +++ b/ipa-server/ipa-gui/ipagui/static/javascript/ipautil.js @@ -0,0 +1,8 @@ + +/* + * Escapes the ' " and \ characters in a string, so + * it can be embedded inside a dynamically generated string. + */ +function jsStringEscape(input) { + return input.gsub(/(['"\\])/, function(match){ return "\\" + match[0]} ); +} diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid index 9e388ee7..0a48dbeb 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid @@ -3,22 +3,31 @@
+ + @@ -207,20 +217,32 @@
-
+ +
${member_name} (${member_uid}) remove +
@@ -272,8 +294,8 @@ * This section restores the contents of the add and remove lists * dynamically if we have to refresh the page */ - if ($('form_uid_to_cn_json').value != "") { - uid_to_cn_hash = new Hash($('form_uid_to_cn_json').value.evalJSON()); + if ($('form_dn_to_cn_json').value != "") { + dn_to_cn_hash = new Hash($('form_dn_to_cn_json').value.evalJSON()); } if ($('form_editprotected').value != "") { @@ -283,30 +305,37 @@ - -
diff --git a/ipa-server/ipa-gui/ipagui/templates/master.kid b/ipa-server/ipa-gui/ipagui/templates/master.kid index 9715e384..4ed69a17 100644 --- a/ipa-server/ipa-gui/ipagui/templates/master.kid +++ b/ipa-server/ipa-gui/ipagui/templates/master.kid @@ -11,6 +11,7 @@ + diff --git a/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid b/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid index e62fb8b9..6c195b29 100644 --- a/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid +++ b/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid @@ -1,24 +1,42 @@
+ +
+ +
-
+
+ ${user.givenName} ${user.sn} (${user.uid}) - add +