summaryrefslogtreecommitdiffstats
path: root/ipa-server/ipa-gui/ipagui/subcontrollers/ipapolicy.py
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2007-12-04 13:18:37 -0500
committerRob Crittenden <rcritten@redhat.com>2007-12-04 13:18:37 -0500
commit2fbe5cbf492597a87427b61f1e470052b77465b2 (patch)
tree0a4bdf0cbd8068f7d2e33a9be7037b178ee7f378 /ipa-server/ipa-gui/ipagui/subcontrollers/ipapolicy.py
parent69765f52ce54eacb704b7ff1ee4287a3ed787371 (diff)
downloadfreeipa.git-2fbe5cbf492597a87427b61f1e470052b77465b2.tar.gz
freeipa.git-2fbe5cbf492597a87427b61f1e470052b77465b2.tar.xz
freeipa.git-2fbe5cbf492597a87427b61f1e470052b77465b2.zip
Phase 1 of allowing admins to set the default object classes for users & groups
This adds the UI and does error checking of the selected object classes but it doesn't actually use the values yet. It also generalizes some functions for doing multi-valued fields.
Diffstat (limited to 'ipa-server/ipa-gui/ipagui/subcontrollers/ipapolicy.py')
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/ipapolicy.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/ipapolicy.py b/ipa-server/ipa-gui/ipagui/subcontrollers/ipapolicy.py
index a82b9888..d8237331 100644
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/ipapolicy.py
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/ipapolicy.py
@@ -17,6 +17,7 @@ from ipa.entity import utf8_encode_values
from ipa import ipaerror
import ipa.entity
import ipagui.forms.ipapolicy
+from ipagui.helpers import ipahelper
import ldap.dn
@@ -71,6 +72,15 @@ class IPAPolicyController(IPAController):
# Combine the 2 dicts to make the form easier
ipapolicy_dict.update(password_dict)
+ # Load potential multi-valued fields
+ if isinstance(ipapolicy_dict.get('ipauserobjectclasses',''), str):
+ ipapolicy_dict['ipauserobjectclasses'] = [ipapolicy_dict.get('ipauserobjectclasses')]
+ ipapolicy_dict['userobjectclasses'] = ipahelper.setup_mv_fields(ipapolicy_dict.get('ipauserobjectclasses'), 'ipauserobjectclasses')
+
+ if isinstance(ipapolicy_dict.get('ipagroupobjectclasses',''), str):
+ ipapolicy_dict['ipagroupobjectclasses'] = [ipapolicy_dict.get('ipagroupobjectclasses')]
+ ipapolicy_dict['groupobjectclasses'] = ipahelper.setup_mv_fields(ipapolicy_dict.get('ipagroupobjectclasses'), 'ipagroupobjectclasses')
+
return dict(form=ipapolicy_edit_form, ipapolicy=ipapolicy_dict)
except ipaerror.IPAError, e:
turbogears.flash("IPA Policy edit failed: " + str(e) + "<br/>" + str(e.detail))
@@ -88,6 +98,10 @@ class IPAPolicyController(IPAController):
turbogears.flash("Edit policy cancelled")
raise turbogears.redirect('/ipapolicy/show')
+ # Fix incoming multi-valued fields we created for the form
+ kw = ipahelper.fix_incoming_fields(kw, 'ipauserobjectclasses', 'userobjectclasses')
+ kw = ipahelper.fix_incoming_fields(kw, 'ipagroupobjectclasses', 'groupobjectclasses')
+
tg_errors, kw = self.ipapolicyupdatevalidate(**kw)
if tg_errors:
turbogears.flash("There were validation errors.<br/>" +
@@ -132,6 +146,12 @@ class IPAPolicyController(IPAController):
if new_ipapolicy.ipadefaultprimarygroup != kw.get('ipadefaultprimarygroup'):
policy_modified = True
new_ipapolicy.setValue('ipadefaultprimarygroup', kw.get('ipadefaultprimarygroup'))
+ if new_ipapolicy.ipauserobjectclasses != kw.get('ipauserobjectclasses'):
+ policy_modified = True
+ new_ipapolicy.setValue('ipauserobjectclasses', kw.get('ipauserobjectclasses'))
+ if new_ipapolicy.ipagroupobjectclasses != kw.get('ipagroupobjectclasses'):
+ policy_modified = True
+ new_ipapolicy.setValue('ipagroupobjectclasses', kw.get('ipagroupobjectclasses'))
if policy_modified:
rv = client.update_ipa_config(new_ipapolicy)