diff options
-rw-r--r-- | install/ui/user.js | 11 | ||||
-rw-r--r-- | ipalib/parameters.py | 4 | ||||
-rw-r--r-- | ipalib/plugins/user.py | 27 | ||||
-rw-r--r-- | ipaserver/ipaldap.py | 2 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_attr.py | 14 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_replace.py | 12 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_user_plugin.py | 22 |
7 files changed, 52 insertions, 40 deletions
diff --git a/install/ui/user.js b/install/ui/user.js index 9fd14d69d..fb43916f1 100644 --- a/install/ui/user.js +++ b/install/ui/user.js @@ -200,9 +200,16 @@ IPA.user_status_widget = function(spec) { if (!that.record) return; var lock_field = 'nsaccountlock'; + var locked_field = that.record[lock_field]; + var locked = false; - var locked = that.record[lock_field] && - that.record[lock_field][0].toLowerCase() === 'true'; + if (typeof locked_field === 'array') locked_field = locked_field[0]; + + if (typeof locked_field === 'boolean') { + locked = locked_field; + } else { + locked = locked_field && locked_field.toLowerCase() === 'true'; + } var status; var action; diff --git a/ipalib/parameters.py b/ipalib/parameters.py index 75981e960..da3b05cf7 100644 --- a/ipalib/parameters.py +++ b/ipalib/parameters.py @@ -904,8 +904,8 @@ class Bool(Param): # FIXME: This my quick hack to get some UI stuff working, change these defaults # --jderose 2009-08-28 kwargs = Param.kwargs + ( - ('truths', frozenset, frozenset([1, u'1', u'true', u'TRUE'])), - ('falsehoods', frozenset, frozenset([0, u'0', u'false', u'FALSE'])), + ('truths', frozenset, frozenset([1, u'1', True, u'true', u'TRUE'])), + ('falsehoods', frozenset, frozenset([0, u'0', False, u'false', u'FALSE'])), ) def _convert_scalar(self, value, index=None): diff --git a/ipalib/plugins/user.py b/ipalib/plugins/user.py index 105814d5f..f0ee8f5b8 100644 --- a/ipalib/plugins/user.py +++ b/ipalib/plugins/user.py @@ -69,11 +69,19 @@ NO_UPG_MAGIC = '__no_upg__' def validate_nsaccountlock(entry_attrs): if 'nsaccountlock' in entry_attrs: - if not isinstance(entry_attrs['nsaccountlock'], basestring): - raise errors.OnlyOneValueAllowed(attr='nsaccountlock') - if entry_attrs['nsaccountlock'].lower() not in ('true','false'): - raise errors.ValidationError(name='nsaccountlock', error='must be TRUE or FALSE') - + nsaccountlock = entry_attrs['nsaccountlock'] + if not isinstance(nsaccountlock, (bool, Bool)): + if not isinstance(nsaccountlock, basestring): + raise errors.OnlyOneValueAllowed(attr='nsaccountlock') + if nsaccountlock.lower() not in ('true','false'): + raise errors.ValidationError(name='nsaccountlock', error='must be TRUE or FALSE') + +def convert_nsaccountlock(entry_attrs): + if not 'nsaccountlock' in entry_attrs: + entry_attrs['nsaccountlock'] = False + else: + nsaccountlock = Bool('temp') + entry_attrs['nsaccountlock'] = nsaccountlock.convert(entry_attrs['nsaccountlock'][0]) class user(LDAPObject): """ @@ -428,8 +436,7 @@ class user_mod(LDAPUpdate): return dn def post_callback(self, ldap, dn, entry_attrs, *keys, **options): - if not 'nsaccountlock' in entry_attrs: - entry_attrs['nsaccountlock'] = [u'False'] + convert_nsaccountlock(entry_attrs) self.obj._convert_manager(entry_attrs, **options) return dn @@ -460,8 +467,7 @@ class user_find(LDAPSearch): for entry in entries: (dn, attrs) = entry self.obj._convert_manager(attrs, **options) - if not 'nsaccountlock' in attrs: - attrs['nsaccountlock'] = [u'False'] + convert_nsaccountlock(attrs) msg_summary = ngettext( '%(count)d user matched', '%(count)d users matched', 0 @@ -475,8 +481,7 @@ class user_show(LDAPRetrieve): Display information about a user. """ def post_callback(self, ldap, dn, entry_attrs, *keys, **options): - if not 'nsaccountlock' in entry_attrs: - entry_attrs['nsaccountlock'] = [u'False'] + convert_nsaccountlock(entry_attrs) self.obj._convert_manager(entry_attrs, **options) return dn diff --git a/ipaserver/ipaldap.py b/ipaserver/ipaldap.py index cf76d6222..77f5b289a 100644 --- a/ipaserver/ipaldap.py +++ b/ipaserver/ipaldap.py @@ -567,7 +567,7 @@ class IPAdmin(SimpleLDAPObject): else: operation = ldap.MOD_ADD - modlist.append((operation, "nsAccountlock", "true")) + modlist.append((operation, "nsAccountlock", "TRUE")) try: if sctrl is not None: diff --git a/tests/test_xmlrpc/test_attr.py b/tests/test_xmlrpc/test_attr.py index 198251fcd..9f1b1c51d 100644 --- a/tests/test_xmlrpc/test_attr.py +++ b/tests/test_xmlrpc/test_attr.py @@ -83,7 +83,7 @@ class test_attr(Declarative): gidnumber=[fuzzy_digits], mail=[u'test@example.com'], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -107,7 +107,7 @@ class test_attr(Declarative): gidnumber=[fuzzy_digits], mail=[u'test@example.com', u'test2@example.com'], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -132,7 +132,7 @@ class test_attr(Declarative): mail=[u'test@example.com', u'test2@example.com'], memberof_group=[u'ipausers'], telephonenumber=[u'410-555-1212', u'301-555-1212'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -157,7 +157,7 @@ class test_attr(Declarative): mail=[u'test@example.com', u'test2@example.com'], memberof_group=[u'ipausers'], telephonenumber=[u'301-555-1212'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -182,7 +182,7 @@ class test_attr(Declarative): mail=[u'test@example.com', u'test2@example.com'], memberof_group=[u'ipausers'], telephonenumber=[u'301-555-1212', u'202-888-9833', u'703-555-1212'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -225,7 +225,7 @@ class test_attr(Declarative): mail=[u'test@example.com', u'test2@example.com'], memberof_group=[u'ipausers'], telephonenumber=[u'301-555-1212', u'202-888-9833', u'703-555-1212'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -250,7 +250,7 @@ class test_attr(Declarative): mail=[u'test@example.com', u'test2@example.com'], memberof_group=[u'ipausers'], telephonenumber=[u'301-555-1212', u'202-888-9833', u'703-555-1212'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, diff --git a/tests/test_xmlrpc/test_replace.py b/tests/test_xmlrpc/test_replace.py index 931e487fa..668177844 100644 --- a/tests/test_xmlrpc/test_replace.py +++ b/tests/test_xmlrpc/test_replace.py @@ -89,7 +89,7 @@ class test_replace(Declarative): gidnumber=[fuzzy_digits], mail=[u'test1@example.com', u'test3@example.com'], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -113,7 +113,7 @@ class test_replace(Declarative): gidnumber=[fuzzy_digits], mail=[u'test4@example.com'], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -137,7 +137,7 @@ class test_replace(Declarative): gidnumber=[fuzzy_digits], mail=[u'test6@example.com', u'test7@example.com', u'test5@example.com'], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -160,7 +160,7 @@ class test_replace(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -184,7 +184,7 @@ class test_replace(Declarative): gidnumber=[fuzzy_digits], initials=[u'ABC'], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -207,7 +207,7 @@ class test_replace(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, diff --git a/tests/test_xmlrpc/test_user_plugin.py b/tests/test_xmlrpc/test_user_plugin.py index 9ebf844d5..36e19defc 100644 --- a/tests/test_xmlrpc/test_user_plugin.py +++ b/tests/test_xmlrpc/test_user_plugin.py @@ -129,7 +129,7 @@ class test_user(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), value=user1, summary=None, @@ -161,7 +161,7 @@ class test_user(Declarative): 'ipauniqueid': [fuzzy_uuid], 'mepmanagedentry': [u'cn=%s,cn=groups,cn=accounts,%s' % (user1, api.env.basedn)], 'krbpwdpolicyreference': [u'cn=global_policy,cn=%s,cn=kerberos,%s' % (api.env.realm, api.env.basedn)], - 'nsaccountlock': [u'False'], + 'nsaccountlock': False, 'displayname': [u'Test User1'], 'cn': [u'Test User1'], 'initials': [u'TU'], @@ -187,7 +187,7 @@ class test_user(Declarative): loginshell=[u'/bin/sh'], sn=[u'User1'], uid=[user1], - nsaccountlock=[u'False'], + nsaccountlock=False, uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], ), @@ -212,7 +212,7 @@ class test_user(Declarative): loginshell=[u'/bin/bash'], sn=[u'Administrator'], uid=[u'admin'], - nsaccountlock=[u'False'], + nsaccountlock=False, uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], ), @@ -223,7 +223,7 @@ class test_user(Declarative): loginshell=[u'/bin/sh'], sn=[u'User1'], uid=[user1], - nsaccountlock=[u'False'], + nsaccountlock=False, uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], ), @@ -248,7 +248,7 @@ class test_user(Declarative): loginshell=[u'/bin/bash'], sn=[u'Administrator'], uid=[u'admin'], - nsaccountlock=[u'False'], + nsaccountlock=False, uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], ), @@ -301,7 +301,7 @@ class test_user(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "tuser1"', value=user1, @@ -332,7 +332,7 @@ class test_user(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=None, value=user1, @@ -354,7 +354,7 @@ class test_user(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "%s"' % user1, value=user1, @@ -382,7 +382,7 @@ class test_user(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, ), summary=u'Modified user "%s"' % renameduser1, value=renameduser1, @@ -497,7 +497,7 @@ class test_user(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], - nsaccountlock=[u'False'], + nsaccountlock=False, manager=[user1], ), summary=u'Modified user "%s"' % user2, |