The source and target groups weren't highlighted but the entire block of checkboxes was and it looked absolutely horrible.
93 lines
2.7 KiB
Python
93 lines
2.7 KiB
Python
import turbogears
|
|
from turbogears import validators, widgets
|
|
|
|
from ipagui.forms.user import UserFields
|
|
|
|
# TODO - get from config or somewhere
|
|
aci_attrs = [
|
|
UserFields.givenname,
|
|
UserFields.sn,
|
|
UserFields.cn,
|
|
UserFields.title,
|
|
UserFields.displayname,
|
|
UserFields.initials,
|
|
UserFields.uid,
|
|
UserFields.userpassword,
|
|
UserFields.uidnumber,
|
|
UserFields.gidnumber,
|
|
UserFields.homedirectory,
|
|
UserFields.loginshell,
|
|
UserFields.gecos,
|
|
UserFields.mail,
|
|
UserFields.telephonenumber,
|
|
UserFields.facsimiletelephonenumber,
|
|
UserFields.mobile,
|
|
UserFields.pager,
|
|
UserFields.homephone,
|
|
UserFields.street,
|
|
UserFields.l,
|
|
UserFields.st,
|
|
UserFields.postalcode,
|
|
UserFields.ou,
|
|
UserFields.businesscategory,
|
|
UserFields.description,
|
|
UserFields.employeetype,
|
|
UserFields.manager,
|
|
UserFields.roomnumber,
|
|
UserFields.secretary,
|
|
UserFields.carlicense,
|
|
UserFields.labeleduri,
|
|
]
|
|
|
|
aci_checkbox_attrs = [(field.name, field.label) for field in aci_attrs]
|
|
|
|
aci_name_to_label = dict(aci_checkbox_attrs)
|
|
|
|
class DelegateFields(object):
|
|
name = widgets.TextField(name="name", label="Delegation Name")
|
|
|
|
source_group_dn = widgets.HiddenField(name="source_group_dn")
|
|
dest_group_dn = widgets.HiddenField(name="dest_group_dn")
|
|
|
|
source_group_cn = widgets.HiddenField(name="source_group_cn",
|
|
label="People in Group")
|
|
dest_group_cn = widgets.HiddenField(name="dest_group_cn",
|
|
label="For People in Group")
|
|
|
|
orig_acistr = widgets.HiddenField(name="orig_acistr")
|
|
|
|
attrs = widgets.CheckBoxList(name="attrs", label="Can Modify",
|
|
options=aci_checkbox_attrs, validator=validators.NotEmpty)
|
|
|
|
class DelegateValidator(validators.Schema):
|
|
name = validators.String(not_empty=True)
|
|
source_group_dn = validators.String(not_empty=True,
|
|
messages = { 'empty': _("Please choose a group"), })
|
|
dest_group_dn = validators.String(not_empty=True,
|
|
messages = { 'empty': _("Please choose a group"), })
|
|
# There is no attrs validator here because then it shows as one
|
|
# huge block of color in the form. The validation is done in
|
|
# the subcontroller.
|
|
|
|
class DelegateForm(widgets.Form):
|
|
params = ['delegate_fields', 'attr_list']
|
|
|
|
hidden_fields = [
|
|
DelegateFields.source_group_dn,
|
|
DelegateFields.dest_group_dn,
|
|
DelegateFields.source_group_cn,
|
|
DelegateFields.dest_group_cn,
|
|
DelegateFields.orig_acistr,
|
|
]
|
|
|
|
validator = DelegateValidator()
|
|
|
|
def __init__(self, *args, **kw):
|
|
super(DelegateForm,self).__init__(*args, **kw)
|
|
(self.template_c, self.template) = widgets.meta.load_kid_template(
|
|
"ipagui.templates.delegateform")
|
|
self.delegate_fields = DelegateFields
|
|
|
|
def update_params(self, params):
|
|
super(DelegateForm,self).update_params(params)
|