Fixes to the edit protected checkbox.

- Make checkbox sticky on round trips
- Make required fields validate when checkbox is checked.
This commit is contained in:
Kevin McCarthy 2007-09-18 10:54:53 -07:00
parent 8190404706
commit c4998d3902
7 changed files with 40 additions and 11 deletions

View File

@ -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)

View File

@ -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]

View File

@ -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()

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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>