summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2008-01-30 09:31:03 -0500
committerRob Crittenden <rcritten@redhat.com>2008-01-30 09:31:03 -0500
commitc50ebd965703acb666f3d368e32afe78e03630ce (patch)
tree637fb3aa1c303aedcc76db39767cb2452b5285c4
parent97d9c235ddf5274836eb8bfc18e8798ae44614a0 (diff)
downloadfreeipa-c50ebd965703acb666f3d368e32afe78e03630ce.tar.gz
freeipa-c50ebd965703acb666f3d368e32afe78e03630ce.tar.xz
freeipa-c50ebd965703acb666f3d368e32afe78e03630ce.zip
Don't set blank values so we don't end up with empty attributes
Resolves 429895
-rw-r--r--ipa-python/entity.py21
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/user.py140
2 files changed, 91 insertions, 70 deletions
diff --git a/ipa-python/entity.py b/ipa-python/entity.py
index 81d2dd283..a5aa33ca3 100644
--- a/ipa-python/entity.py
+++ b/ipa-python/entity.py
@@ -122,6 +122,27 @@ class Entity:
setValues = setValue
+ def setValueNotEmpty(self,name,*value):
+ """Similar to setValue() but will not set an empty field. This
+ is an attempt to avoid adding empty attributes."""
+ if (len(value) >= 1) and value[0] and len(value[0]) > 0:
+ if isinstance(value[0], list):
+ if len(value[0][0]) > 0:
+ self.setValue(name, *value)
+ return
+ else:
+ self.setValue(name, *value)
+ return
+
+ # At this point we have an empty incoming value. See if they are
+ # trying to erase the current value. If so we'll delete it so
+ # it gets marked as removed in the modlist.
+ v = self.getValues(name)
+ if v:
+ self.delValue(name)
+
+ return
+
def delValue(self,name):
"""Remove the attribute named name."""
if self.data.get(name,None):
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py
index d46e412da..54fb29cdd 100644
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py
@@ -154,45 +154,45 @@ class UserController(IPAController):
#
try:
new_user = ipa.user.User()
- new_user.setValue('title', kw.get('title'))
- new_user.setValue('givenname', kw.get('givenname'))
- new_user.setValue('sn', kw.get('sn'))
- new_user.setValue('cn', kw.get('cn'))
- new_user.setValue('displayname', kw.get('displayname'))
- new_user.setValue('initials', kw.get('initials'))
-
- new_user.setValue('uid', kw.get('uid'))
- new_user.setValue('loginshell', kw.get('loginshell'))
- new_user.setValue('gecos', kw.get('gecos'))
-
- new_user.setValue('mail', kw.get('mail'))
- new_user.setValue('telephonenumber', kw.get('telephonenumber'))
- new_user.setValue('facsimiletelephonenumber',
+ new_user.setValueNotEmpty('title', kw.get('title'))
+ new_user.setValueNotEmpty('givenname', kw.get('givenname'))
+ new_user.setValueNotEmpty('sn', kw.get('sn'))
+ new_user.setValueNotEmpty('cn', kw.get('cn'))
+ new_user.setValueNotEmpty('displayname', kw.get('displayname'))
+ new_user.setValueNotEmpty('initials', kw.get('initials'))
+
+ new_user.setValueNotEmpty('uid', kw.get('uid'))
+ new_user.setValueNotEmpty('loginshell', kw.get('loginshell'))
+ new_user.setValueNotEmpty('gecos', kw.get('gecos'))
+
+ new_user.setValueNotEmpty('mail', kw.get('mail'))
+ new_user.setValueNotEmpty('telephonenumber', kw.get('telephonenumber'))
+ new_user.setValueNotEmpty('facsimiletelephonenumber',
kw.get('facsimiletelephonenumber'))
- new_user.setValue('mobile', kw.get('mobile'))
- new_user.setValue('pager', kw.get('pager'))
- new_user.setValue('homephone', kw.get('homephone'))
-
- new_user.setValue('street', kw.get('street'))
- new_user.setValue('l', kw.get('l'))
- new_user.setValue('st', kw.get('st'))
- new_user.setValue('postalcode', kw.get('postalcode'))
-
- new_user.setValue('ou', kw.get('ou'))
- new_user.setValue('businesscategory', kw.get('businesscategory'))
- new_user.setValue('description', kw.get('description'))
- new_user.setValue('employeetype', kw.get('employeetype'))
+ new_user.setValueNotEmpty('mobile', kw.get('mobile'))
+ new_user.setValueNotEmpty('pager', kw.get('pager'))
+ new_user.setValueNotEmpty('homephone', kw.get('homephone'))
+
+ new_user.setValueNotEmpty('street', kw.get('street'))
+ new_user.setValueNotEmpty('l', kw.get('l'))
+ new_user.setValueNotEmpty('st', kw.get('st'))
+ new_user.setValueNotEmpty('postalcode', kw.get('postalcode'))
+
+ new_user.setValueNotEmpty('ou', kw.get('ou'))
+ new_user.setValueNotEmpty('businesscategory', kw.get('businesscategory'))
+ new_user.setValueNotEmpty('description', kw.get('description'))
+ new_user.setValueNotEmpty('employeetype', kw.get('employeetype'))
if kw.get('manager'):
- new_user.setValue('manager', kw.get('manager'))
- new_user.setValue('roomnumber', kw.get('roomnumber'))
+ new_user.setValueNotEmpty('manager', kw.get('manager'))
+ new_user.setValueNotEmpty('roomnumber', kw.get('roomnumber'))
if kw.get('secretary'):
- new_user.setValue('secretary', kw.get('secretary'))
+ new_user.setValueNotEmpty('secretary', kw.get('secretary'))
- new_user.setValue('carlicense', kw.get('carlicense'))
- new_user.setValue('labeleduri', kw.get('labeleduri'))
+ new_user.setValueNotEmpty('carlicense', kw.get('carlicense'))
+ new_user.setValueNotEmpty('labeleduri', kw.get('labeleduri'))
for custom_field in user_new_form.custom_fields:
- new_user.setValue(custom_field.name,
+ new_user.setValueNotEmpty(custom_field.name,
kw.get(custom_field.name, ''))
rv = client.add_user(new_user)
@@ -465,50 +465,50 @@ class UserController(IPAController):
del(orig_user_dict['homephones'])
new_user = ipa.user.User(orig_user_dict)
- new_user.setValue('title', kw.get('title'))
- new_user.setValue('givenname', kw.get('givenname'))
- new_user.setValue('sn', kw.get('sn'))
- new_user.setValue('cn', kw.get('cn'))
- new_user.setValue('displayname', kw.get('displayname'))
- new_user.setValue('initials', kw.get('initials'))
-
- new_user.setValue('loginshell', kw.get('loginshell'))
- new_user.setValue('gecos', kw.get('gecos'))
-
- new_user.setValue('mail', kw.get('mail'))
- new_user.setValue('telephonenumber', kw.get('telephonenumber'))
- new_user.setValue('facsimiletelephonenumber',
+ new_user.setValueNotEmpty('title', kw.get('title'))
+ new_user.setValueNotEmpty('givenname', kw.get('givenname'))
+ new_user.setValueNotEmpty('sn', kw.get('sn'))
+ new_user.setValueNotEmpty('cn', kw.get('cn'))
+ new_user.setValueNotEmpty('displayname', kw.get('displayname'))
+ new_user.setValueNotEmpty('initials', kw.get('initials'))
+
+ new_user.setValueNotEmpty('loginshell', kw.get('loginshell'))
+ new_user.setValueNotEmpty('gecos', kw.get('gecos'))
+
+ new_user.setValueNotEmpty('mail', kw.get('mail'))
+ new_user.setValueNotEmpty('telephonenumber', kw.get('telephonenumber'))
+ new_user.setValueNotEmpty('facsimiletelephonenumber',
kw.get('facsimiletelephonenumber'))
- new_user.setValue('mobile', kw.get('mobile'))
- new_user.setValue('pager', kw.get('pager'))
- new_user.setValue('homephone', kw.get('homephone'))
-
- new_user.setValue('street', kw.get('street'))
- new_user.setValue('l', kw.get('l'))
- new_user.setValue('st', kw.get('st'))
- new_user.setValue('postalcode', kw.get('postalcode'))
-
- new_user.setValue('ou', kw.get('ou'))
- new_user.setValue('businesscategory', kw.get('businesscategory'))
- new_user.setValue('description', kw.get('description'))
- new_user.setValue('employeetype', kw.get('employeetype'))
- new_user.setValue('manager', kw.get('manager'))
- new_user.setValue('roomnumber', kw.get('roomnumber'))
- new_user.setValue('secretary', kw.get('secretary'))
-
- new_user.setValue('carlicense', kw.get('carlicense'))
- new_user.setValue('labeleduri', kw.get('labeleduri'))
+ new_user.setValueNotEmpty('mobile', kw.get('mobile'))
+ new_user.setValueNotEmpty('pager', kw.get('pager'))
+ new_user.setValueNotEmpty('homephone', kw.get('homephone'))
+
+ new_user.setValueNotEmpty('street', kw.get('street'))
+ new_user.setValueNotEmpty('l', kw.get('l'))
+ new_user.setValueNotEmpty('st', kw.get('st'))
+ new_user.setValueNotEmpty('postalcode', kw.get('postalcode'))
+
+ new_user.setValueNotEmpty('ou', kw.get('ou'))
+ new_user.setValueNotEmpty('businesscategory', kw.get('businesscategory'))
+ new_user.setValueNotEmpty('description', kw.get('description'))
+ new_user.setValueNotEmpty('employeetype', kw.get('employeetype'))
+ new_user.setValueNotEmpty('manager', kw.get('manager'))
+ new_user.setValueNotEmpty('roomnumber', kw.get('roomnumber'))
+ new_user.setValueNotEmpty('secretary', kw.get('secretary'))
+
+ new_user.setValueNotEmpty('carlicense', kw.get('carlicense'))
+ new_user.setValueNotEmpty('labeleduri', kw.get('labeleduri'))
if kw.get('editprotected') == 'true':
if kw.get('userpassword'):
password_change = True
- new_user.setValue('uidnumber', str(kw.get('uidnumber')))
- new_user.setValue('gidnumber', str(kw.get('gidnumber')))
- new_user.setValue('homedirectory', str(kw.get('homedirectory')))
- new_user.setValue('uid', str(kw.get('uid')))
+ new_user.setValueNotEmpty('uidnumber', str(kw.get('uidnumber')))
+ new_user.setValueNotEmpty('gidnumber', str(kw.get('gidnumber')))
+ new_user.setValueNotEmpty('homedirectory', str(kw.get('homedirectory')))
+ new_user.setValueNotEmpty('uid', str(kw.get('uid')))
for custom_field in user_edit_form.custom_fields:
- new_user.setValue(custom_field.name,
+ new_user.setValueNotEmpty(custom_field.name,
kw.get(custom_field.name, ''))
rv = client.update_user(new_user)