summaryrefslogtreecommitdiffstats
path: root/ipa-server/ipa-gui/ipagui/forms/delegate.py
blob: d9d5d727cf81de86e545c8d4f230ecb979f49092 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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"), })
    attrs = validators.NotEmpty(
        messages = { 'empty': _("Please select at least one value"), })

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)