From 83dd42797e169faabe059502066c3f2ff11d1338 Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Wed, 14 Nov 2007 17:50:46 -0500 Subject: [PATCH] Include multi-value fields on the Add Person page Remove multi-valued cn from groups --- ipa-server/ipa-gui/ipagui/forms/group.py | 1 - ipa-server/ipa-gui/ipagui/forms/user.py | 1 + .../ipa-gui/ipagui/subcontrollers/group.py | 14 +- .../ipa-gui/ipagui/subcontrollers/user.py | 9 + .../ipagui/templates/groupeditform.kid | 32 +-- .../ipa-gui/ipagui/templates/groupshow.kid | 26 +- .../ipa-gui/ipagui/templates/usernewform.kid | 237 ++++++++++++++---- 7 files changed, 222 insertions(+), 98 deletions(-) diff --git a/ipa-server/ipa-gui/ipagui/forms/group.py b/ipa-server/ipa-gui/ipagui/forms/group.py index f9ae5e5ea..670494bd6 100644 --- a/ipa-server/ipa-gui/ipagui/forms/group.py +++ b/ipa-server/ipa-gui/ipagui/forms/group.py @@ -4,7 +4,6 @@ from tg_expanding_form_widget.tg_expanding_form_widget import ExpandingForm class GroupFields(): cn = widgets.TextField(name="cn", label="Name") - cns = ExpandingForm(name="cns", label="Common Names", fields=[cn]) gidnumber = widgets.TextField(name="gidnumber", label="GID") description = widgets.TextField(name="description", label="Description") diff --git a/ipa-server/ipa-gui/ipagui/forms/user.py b/ipa-server/ipa-gui/ipagui/forms/user.py index 7cc150eff..7d3d37193 100644 --- a/ipa-server/ipa-gui/ipagui/forms/user.py +++ b/ipa-server/ipa-gui/ipagui/forms/user.py @@ -74,6 +74,7 @@ class UserNewValidator(validators.Schema): userpassword_confirm = validators.String(not_empty=False) givenname = validators.String(not_empty=True) sn = validators.String(not_empty=True) + cn = validators.ForEach(validators.String(not_empty=True)) mail = validators.Email(not_empty=False) chained_validators = [ diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/group.py b/ipa-server/ipa-gui/ipagui/subcontrollers/group.py index 0df2d3c8c..e9763bacd 100644 --- a/ipa-server/ipa-gui/ipagui/subcontrollers/group.py +++ b/ipa-server/ipa-gui/ipagui/subcontrollers/group.py @@ -90,9 +90,11 @@ class GroupController(IPAController): # on any error, we redirect to the _edit_ group page. # this code does data setup, similar to groupedit() # - if isinstance(kw['cn'], str): - kw['cn'] = [kw['cn']] - group = client.get_entry_by_cn(kw['cn'][0], group_fields) + if isinstance(kw['cn'], list): + cn0 = kw['cn'][0] + else: + cn0 = kw['cn'] + group = client.get_entry_by_cn(cn0, group_fields) group_dict = group.toDict() member_dicts = [] @@ -220,12 +222,6 @@ class GroupController(IPAController): self.restrict_post() client = self.get_ipaclient() - # Fix incoming multi-valued form fields - kw['cn'] = [] - for i in range(len(kw['cns'])): - kw['cn'].append(kw['cns'][i]['cn']) - del(kw['cns']) - if kw.get('submit') == 'Cancel Edit': turbogears.flash("Edit group cancelled") raise turbogears.redirect('/group/show', cn=kw.get('cn')[0]) diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py index bf77b113f..290ad25cb 100644 --- a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py +++ b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py @@ -117,6 +117,15 @@ class UserController(IPAController): raise turbogears.redirect('/user/list') tg_errors, kw = self.usercreatevalidate(**kw) + + # Fix incoming multi-valued fields we created for the form + kw = self.fix_incoming_fields(kw, 'cn', 'cns') + kw = self.fix_incoming_fields(kw, 'telephonenumber', 'telephonenumbers') + kw = self.fix_incoming_fields(kw, 'facsimiletelephonenumber', 'facsimiletelephonenumbers') + kw = self.fix_incoming_fields(kw, 'mobile', 'mobiles') + kw = self.fix_incoming_fields(kw, 'pager', 'pagers') + kw = self.fix_incoming_fields(kw, 'homephone', 'homephones') + if tg_errors: turbogears.flash("There were validation errors.
" + "Please see the messages below for details.") diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid index 865cdfcc3..e6e456789 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid @@ -68,35 +68,13 @@ from ipagui.helpers import ipahelper - diff --git a/ipa-server/ipa-gui/ipagui/templates/groupshow.kid b/ipa-server/ipa-gui/ipagui/templates/groupshow.kid index a58220344..b2f37bf52 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupshow.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupshow.kid @@ -7,7 +7,10 @@

View Group

@@ -23,21 +26,7 @@ edit_url = tg.url('/group/edit', cn=group.get('cn')[0])
- + @@ -66,7 +55,10 @@ edit_url = tg.url('/group/edit', cn=group.get('cn')[0]) member_type = "user" view_url = tg.url('/user/show', uid=member_uid) else: - member_cn = "%s" % member.get('cn')[0] + mem = member.get('cn') + if isinstance(mem, list): + mem = mem[0] + member_cn = "%s" % mem member_desc = "[group]" member_type = "group" view_url = tg.url('/group/show', cn=member_cn) diff --git a/ipa-server/ipa-gui/ipagui/templates/usernewform.kid b/ipa-server/ipa-gui/ipagui/templates/usernewform.kid index 82a90982d..51d1711e7 100644 --- a/ipa-server/ipa-gui/ipagui/templates/usernewform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/usernewform.kid @@ -2,7 +2,7 @@ class="simpleroster"> - +

Identity Details

@@ -109,7 +109,7 @@ from ipagui.helpers import ipahelper var uid = $('form_uid'); var mail = $('form_mail'); - var cn = $('form_cn'); + var cn = $('form_cns_0_cn'); var displayname = $('form_displayname'); var initials = $('form_initials'); @@ -166,14 +166,38 @@ from ipagui.helpers import ipahelper
- @@ -339,63 +363,188 @@ from ipagui.helpers import ipahelper - + + + + - - - - - - -
- - - - - - - - - - - - -
- - - - Remove (-) -
- Add ( + ) +
+ +
- - - - - - - -
${values[index]}
-
${group.get("cn")}
- - - + + + + + + + + + + + +
+ + + + Remove +
+ Add Common Name
- - - + + + + + + + + + + + + +
+ + + + Remove +
+ Add Work Number +
+ + + + + + + + + + + + +
+ + + + Remove +
+ Add Fax Number
- - - + + + + + + + + + + + + +
+ + + + Remove +
+ Add Cell Number
- - - + + + + + + + + + + + + +
+ + + + Remove +
+ Add Pager Number
- - - + + + + + + + + + + + + +
+ + + + Remove +
+ Add Home Phone
- - - -

Mailing Address