diff options
author | Rob Crittenden <rcritten@redhat.com> | 2008-02-08 17:34:23 -0500 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2008-02-08 17:34:23 -0500 |
commit | 5f86f5a5fdc8d24b7185c6d3059a5b5127764292 (patch) | |
tree | dbfa69c8e5138944dd5ac7cba197ae45d4ebcd81 /ipa-server | |
parent | 1a38b6dfdf3a131a8147ce7e0d8694c15a61eb4d (diff) | |
download | freeipa-5f86f5a5fdc8d24b7185c6d3059a5b5127764292.tar.gz freeipa-5f86f5a5fdc8d24b7185c6d3059a5b5127764292.tar.xz freeipa-5f86f5a5fdc8d24b7185c6d3059a5b5127764292.zip |
Generate the multi-value entries needed when redirecting to the edit_user
page. This avoids a Nonetype error.
Resolves 432106
Diffstat (limited to 'ipa-server')
-rw-r--r-- | ipa-server/ipa-gui/ipagui/subcontrollers/user.py | 63 |
1 files changed, 39 insertions, 24 deletions
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py index 54fb29cdd..6ff274096 100644 --- a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py +++ b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py @@ -107,6 +107,38 @@ class UserController(IPAController): user_new_form.validator.add_field(s['field'], validator) user_edit_form.validator.add_field(s['field'], validator) + def initialize_mv_fields(self, user_dict): + """We use a separate attribute to store multi-values while on + the edit page. It is important that this be at least []. If + it is None it will cause an error to be thrown.""" + + # Load potential multi-valued fields + if isinstance(user_dict['cn'], str): + user_dict['cn'] = [user_dict['cn']] + user_dict['cns'] = ipahelper.setup_mv_fields(user_dict['cn'], 'cn') + + if isinstance(user_dict.get('telephonenumber',''), str): + user_dict['telephonenumber'] = [user_dict.get('telephonenumber')] + user_dict['telephonenumbers'] = ipahelper.setup_mv_fields(user_dict.get('telephonenumber'), 'telephonenumber') + + if isinstance(user_dict.get('facsimiletelephonenumber',''), str): + user_dict['facsimiletelephonenumber'] = [user_dict.get('facsimiletelephonenumber')] + user_dict['facsimiletelephonenumbers'] = ipahelper.setup_mv_fields(user_dict.get('facsimiletelephonenumber'), 'facsimiletelephonenumber') + + if isinstance(user_dict.get('mobile',''), str): + user_dict['mobile'] = [user_dict.get('mobile')] + user_dict['mobiles'] = ipahelper.setup_mv_fields(user_dict.get('mobile'), 'mobile') + + if isinstance(user_dict.get('pager',''), str): + user_dict['pager'] = [user_dict.get('pager')] + user_dict['pagers'] = ipahelper.setup_mv_fields(user_dict.get('pager'), 'pager') + + if isinstance(user_dict.get('homephone',''), str): + user_dict['homephone'] = [user_dict.get('homephone')] + user_dict['homephones'] = ipahelper.setup_mv_fields(user_dict.get('homephone'), 'homephone') + + return user_dict + @expose() def index(self): raise turbogears.redirect("/user/list") @@ -249,6 +281,7 @@ class UserController(IPAController): failed_adds = [] try: dnadds = kw.get('dnadd') + cherrypy.session['uid'] = user_dict.get('uid') if dnadds != None: if not(isinstance(dnadds,list) or isinstance(dnadds,tuple)): dnadds = [dnadds] @@ -263,11 +296,16 @@ class UserController(IPAController): message += "There was an error adding groups.<br />" message += "Failures have been preserved in the add/remove lists." turbogears.flash(message) + + # Setup any multi-value fields, otherwise you'll get: + # 'NoneType' object is not iterable + user_dict = self.initialize_mv_fields(user_dict) return dict(form=user_edit_form, user=user_dict, user_groups=user_groups_dicts, tg_template='ipagui.templates.useredit') turbogears.flash("%s added!" % kw['uid']) + print "Succeeded " raise turbogears.redirect('/user/show', uid=kw['uid']) @expose("ipagui.templates.dynamiceditsearch") @@ -316,30 +354,7 @@ class UserController(IPAController): raise turbogears.redirect('/') user_dict = user.toDict() - # Load potential multi-valued fields - if isinstance(user_dict['cn'], str): - user_dict['cn'] = [user_dict['cn']] - user_dict['cns'] = ipahelper.setup_mv_fields(user_dict['cn'], 'cn') - - if isinstance(user_dict.get('telephonenumber',''), str): - user_dict['telephonenumber'] = [user_dict.get('telephonenumber')] - user_dict['telephonenumbers'] = ipahelper.setup_mv_fields(user_dict.get('telephonenumber'), 'telephonenumber') - - if isinstance(user_dict.get('facsimiletelephonenumber',''), str): - user_dict['facsimiletelephonenumber'] = [user_dict.get('facsimiletelephonenumber')] - user_dict['facsimiletelephonenumbers'] = ipahelper.setup_mv_fields(user_dict.get('facsimiletelephonenumber'), 'facsimiletelephonenumber') - - if isinstance(user_dict.get('mobile',''), str): - user_dict['mobile'] = [user_dict.get('mobile')] - user_dict['mobiles'] = ipahelper.setup_mv_fields(user_dict.get('mobile'), 'mobile') - - if isinstance(user_dict.get('pager',''), str): - user_dict['pager'] = [user_dict.get('pager')] - user_dict['pagers'] = ipahelper.setup_mv_fields(user_dict.get('pager'), 'pager') - - if isinstance(user_dict.get('homephone',''), str): - user_dict['homephone'] = [user_dict.get('homephone')] - user_dict['homephones'] = ipahelper.setup_mv_fields(user_dict.get('homephone'), 'homephone') + user_dict = self.initialize_mv_fields(user_dict) # Edit shouldn't fill in the password field. if user_dict.has_key('userpassword'): |