From c4998d3902ab17e73d29255db38f9c4cc33863d6 Mon Sep 17 00:00:00 2001 From: Kevin McCarthy Date: Tue, 18 Sep 2007 10:54:53 -0700 Subject: Fixes to the edit protected checkbox. - Make checkbox sticky on round trips - Make required fields validate when checkbox is checked. --- ipa-server/ipa-gui/ipagui/controllers.py | 15 ++++++++------- ipa-server/ipa-gui/ipagui/forms/group.py | 9 +++++++-- ipa-server/ipa-gui/ipagui/forms/user.py | 7 +++++++ ipa-server/ipa-gui/ipagui/templates/groupedit.kid | 2 +- ipa-server/ipa-gui/ipagui/templates/groupeditform.kid | 7 +++++++ ipa-server/ipa-gui/ipagui/templates/useredit.kid | 2 +- ipa-server/ipa-gui/ipagui/templates/usereditform.kid | 9 +++++++++ 7 files changed, 40 insertions(+), 11 deletions(-) diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py index 1cc998620..fd661eebb 100644 --- a/ipa-server/ipa-gui/ipagui/controllers.py +++ b/ipa-server/ipa-gui/ipagui/controllers.py @@ -163,11 +163,10 @@ class Root(controllers.RootController): new_user.setValue('nsAccountLock', 'true') else: new_user.setValue('nsAccountLock', None) - if kw.get('userpassword'): - new_user.setValue('userpassword', kw.get('userpassword')) - if kw.get('uidnumber'): + if kw.get('editprotected') == 'true': + if kw.get('userpassword'): + new_user.setValue('userpassword', kw.get('userpassword')) new_user.setValue('uidnumber', str(kw.get('uidnumber'))) - if kw.get('gidnumber'): new_user.setValue('gidnumber', str(kw.get('gidnumber'))) # @@ -480,9 +479,11 @@ class Root(controllers.RootController): if new_group.description != kw.get('description'): group_modified = True new_group.setValue('description', kw.get('description')) - if kw.get('gidnumber'): - group_modified = True - new_group.setValue('gidnumber', str(kw.get('gidnumber'))) + if kw.get('editprotected') == 'true': + new_gid = str(kw.get('gidnumber')) + if new_group.gidnumber != new_gid: + group_modified = True + new_group.setValue('gidnumber', new_gid) if group_modified: rv = client.update_group(new_group) diff --git a/ipa-server/ipa-gui/ipagui/forms/group.py b/ipa-server/ipa-gui/ipagui/forms/group.py index 839255969..20706eb6f 100644 --- a/ipa-server/ipa-gui/ipagui/forms/group.py +++ b/ipa-server/ipa-gui/ipagui/forms/group.py @@ -7,13 +7,14 @@ class GroupFields(): description = widgets.TextField(name="description", label="Description") cn_hidden = widgets.HiddenField(name="cn") + editprotected_hidden = widgets.HiddenField(name="editprotected") 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") class GroupNewValidator(validators.Schema): - cn = validators.PlainText(not_empty=True) + cn = validators.String(not_empty=True) description = validators.String(not_empty=False) @@ -37,11 +38,15 @@ class GroupEditValidator(validators.Schema): gidnumber = validators.Int(not_empty=False) description = validators.String(not_empty=False) + pre_validators = [ + validators.RequireIfPresent(required='gidnumber', present='editprotected'), + ] + class GroupEditForm(widgets.Form): params = ['members', 'group'] fields = [GroupFields.gidnumber, GroupFields.description, - GroupFields.cn_hidden, + GroupFields.cn_hidden, GroupFields.editprotected_hidden, GroupFields.group_orig, GroupFields.member_data, GroupFields.uid_to_cn_json] diff --git a/ipa-server/ipa-gui/ipagui/forms/user.py b/ipa-server/ipa-gui/ipagui/forms/user.py index 0fc6761f6..037205a17 100644 --- a/ipa-server/ipa-gui/ipagui/forms/user.py +++ b/ipa-server/ipa-gui/ipagui/forms/user.py @@ -21,6 +21,7 @@ class UserFields(): uidnumber_hidden = widgets.HiddenField(name="uidnumber") gidnumber_hidden = widgets.HiddenField(name="gidnumber") krbPasswordExpiration_hidden = widgets.HiddenField(name="krbPasswordExpiration") + editprotected_hidden = widgets.HiddenField(name="editprotected") user_orig = widgets.HiddenField(name="user_orig") @@ -70,6 +71,11 @@ class UserEditValidator(validators.Schema): # validators.PhoneNumber may be a bit too picky, requiring an area code # telephonenumber = validators.PlainText(not_empty=False) + pre_validators = [ + validators.RequireIfPresent(required='uidnumber', present='editprotected'), + validators.RequireIfPresent(required='gidnumber', present='editprotected'), + ] + chained_validators = [ validators.FieldsMatch('userpassword', 'userpassword_confirm') ] @@ -81,6 +87,7 @@ class UserEditForm(widgets.Form): UserFields.uid_hidden, UserFields.user_orig, UserFields.uidnumber, UserFields.gidnumber, UserFields.krbPasswordExpiration_hidden, + UserFields.editprotected_hidden, ] validator = UserEditValidator() diff --git a/ipa-server/ipa-gui/ipagui/templates/groupedit.kid b/ipa-server/ipa-gui/ipagui/templates/groupedit.kid index 1017e4005..f1d309ca9 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupedit.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupedit.kid @@ -8,7 +8,7 @@
- edit protected fields diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid index df0095d9d..5c2fea744 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid @@ -24,8 +24,10 @@ var gidnumberField = $('form_gidnumber'); if (checkbox.checked) { gidnumberField.disabled = false; + $('form_editprotected').value = 'true'; } else { gidnumberField.disabled = true; + $('form_editprotected').value = ''; } } @@ -273,6 +275,11 @@ if ($('form_uid_to_cn_json').value != "") { uid_to_cn_hash = new Hash($('form_uid_to_cn_json').value.evalJSON()); } + + if ($('form_editprotected').value != "") { + $('toggleprotected_checkbox').checked = true; + toggleProtectedFields($('toggleprotected_checkbox')); + }
- edit protected fields diff --git a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid index ce92122bf..3f7db50d7 100644 --- a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid @@ -13,11 +13,13 @@ passwordConfirmField.disabled = false; uidnumberField.disabled = false; gidnumberField.disabled = false; + $('form_editprotected').value = 'true'; } else { passwordField.disabled = true; passwordConfirmField.disabled = true; uidnumberField.disabled = true; gidnumberField.disabled = true; + $('form_editprotected').value = ''; } } @@ -228,4 +230,11 @@ + +
-- cgit