summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Bokovoy <abokovoy@redhat.com>2011-07-07 18:58:18 +0300
committerAlexander Bokovoy <abokovoy@redhat.com>2011-07-12 13:36:12 +0300
commit40ce1cde62113e8091ed8fae6a2acdf03e7b9c9c (patch)
tree5ead9f82d1e5ce5f45ef664bfc354251c396bc9d
parent3229eee074e6b419f64faa9bb701a60fe96da3a6 (diff)
downloadfreeipa-ticket-1259.tar.gz
freeipa-ticket-1259.tar.xz
freeipa-ticket-1259.zip
Convert nsaccountlock to always work as bool towards Python codeticket-1259
https://fedorahosted.org/freeipa/ticket/1259 Python code will see nsaccountlock as bool. JavaScript code will also see it as bool. This allows native boolean operations with the lock field. Passes both CLI and WebUI tests.
-rw-r--r--install/ui/user.js11
-rw-r--r--ipalib/parameters.py4
-rw-r--r--ipalib/plugins/user.py27
-rw-r--r--ipaserver/ipaldap.py2
-rw-r--r--tests/test_xmlrpc/test_attr.py14
-rw-r--r--tests/test_xmlrpc/test_replace.py12
-rw-r--r--tests/test_xmlrpc/test_user_plugin.py22
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 3d9f208d2..56ce056a6 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -903,8 +903,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 1f85238da..7d67bddd5 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,