[Freeipa-devel] [PATCH] fixes to edit protected checkbox
Kevin McCarthy
kmccarth at redhat.com
Tue Sep 18 17:49:25 UTC 2007
This patch makes the edit protected checkbox sticky, and also implements
required field validation for protected fields - only when the box is
checked.
-Kevin
-------------- next part --------------
# HG changeset patch
# User Kevin McCarthy <kmccarth at redhat.com>
# Date 1190138093 25200
# Node ID 364d56d319c1f6ec629d00a7b53585a534ed3962
# Parent a2db36c1fc6c85bc41ab0fab14aa0b3c0757012f
Fixes to the edit protected checkbox.
- Make checkbox sticky on round trips
- Make required fields validate when checkbox is checked.
diff -r a2db36c1fc6c -r 364d56d319c1 ipa-server/ipa-gui/ipagui/controllers.py
--- a/ipa-server/ipa-gui/ipagui/controllers.py Mon Sep 17 15:24:11 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/controllers.py Tue Sep 18 10:54:53 2007 -0700
@@ -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 -r a2db36c1fc6c -r 364d56d319c1 ipa-server/ipa-gui/ipagui/forms/group.py
--- a/ipa-server/ipa-gui/ipagui/forms/group.py Mon Sep 17 15:24:11 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/forms/group.py Tue Sep 18 10:54:53 2007 -0700
@@ -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.Sche
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 -r a2db36c1fc6c -r 364d56d319c1 ipa-server/ipa-gui/ipagui/forms/user.py
--- a/ipa-server/ipa-gui/ipagui/forms/user.py Mon Sep 17 15:24:11 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/forms/user.py Tue Sep 18 10:54:53 2007 -0700
@@ -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.Schem
# 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 -r a2db36c1fc6c -r 364d56d319c1 ipa-server/ipa-gui/ipagui/templates/groupedit.kid
--- a/ipa-server/ipa-gui/ipagui/templates/groupedit.kid Mon Sep 17 15:24:11 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/groupedit.kid Tue Sep 18 10:54:53 2007 -0700
@@ -8,7 +8,7 @@
<body>
<div>
<div style="float:right">
- <input type="checkbox"
+ <input type="checkbox" id="toggleprotected_checkbox"
onclick="toggleProtectedFields(this);">
<span class="small">edit protected fields</span>
</input>
diff -r a2db36c1fc6c -r 364d56d319c1 ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
--- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid Mon Sep 17 15:24:11 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid Tue Sep 18 10:54:53 2007 -0700
@@ -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'));
+ }
</script>
<?python
diff -r a2db36c1fc6c -r 364d56d319c1 ipa-server/ipa-gui/ipagui/templates/useredit.kid
--- a/ipa-server/ipa-gui/ipagui/templates/useredit.kid Mon Sep 17 15:24:11 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/useredit.kid Tue Sep 18 10:54:53 2007 -0700
@@ -9,7 +9,7 @@
<div>
<div style="float:right">
- <input type="checkbox"
+ <input type="checkbox" id="toggleprotected_checkbox"
onclick="toggleProtectedFields(this);">
<span class="small">edit protected fields</span>
</input>
diff -r a2db36c1fc6c -r 364d56d319c1 ipa-server/ipa-gui/ipagui/templates/usereditform.kid
--- a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid Mon Sep 17 15:24:11 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid Tue Sep 18 10:54:53 2007 -0700
@@ -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 = '';
}
}
</script>
@@ -228,4 +230,11 @@
</table>
</form>
+
+ <script type="text/javascript">
+ if ($('form_editprotected').value != "") {
+ $('toggleprotected_checkbox').checked = true;
+ toggleProtectedFields($('toggleprotected_checkbox'));
+ }
+ </script>
</div>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 2228 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20070918/925d8d76/attachment.bin>
More information about the Freeipa-devel
mailing list