mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
197: Added new public.Option.get_default() method that calls Option.default_from() if it's a DefaultFrom instance, and otherwise returns Option.default (the static default value)
This commit is contained in:
@@ -90,14 +90,19 @@ class Option(plugable.Plugin):
|
|||||||
|
|
||||||
__public__ = frozenset((
|
__public__ = frozenset((
|
||||||
'normalize',
|
'normalize',
|
||||||
'default',
|
'get_default',
|
||||||
'validate',
|
'validate',
|
||||||
'required',
|
|
||||||
'type',
|
'type',
|
||||||
|
'required',
|
||||||
|
'default',
|
||||||
|
'default_from',
|
||||||
))
|
))
|
||||||
__rules = None
|
__rules = None
|
||||||
type = unicode
|
type = unicode
|
||||||
required = False
|
required = False
|
||||||
|
default = None
|
||||||
|
default_from = None
|
||||||
|
|
||||||
|
|
||||||
def normalize(self, value):
|
def normalize(self, value):
|
||||||
"""
|
"""
|
||||||
@@ -159,16 +164,12 @@ class Option(plugable.Plugin):
|
|||||||
if is_rule(attr):
|
if is_rule(attr):
|
||||||
yield attr
|
yield attr
|
||||||
|
|
||||||
def default(self, **kw):
|
def get_default(self, **kw):
|
||||||
"""
|
if type(self.default_from) is DefaultFrom:
|
||||||
Returns a default or auto-completed value for this Option. If no
|
default = self.default_from(**kw)
|
||||||
default is available, this method should return None.
|
if default is not None:
|
||||||
|
return default
|
||||||
All the keywords are passed so it's possible to build an
|
return self.default
|
||||||
auto-completed value from other Options values, e.g., build 'initials'
|
|
||||||
from 'givenname' + 'sn'.
|
|
||||||
"""
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
class Command(plugable.Plugin):
|
class Command(plugable.Plugin):
|
||||||
|
|||||||
@@ -190,12 +190,25 @@ class test_Option(ClassChecker):
|
|||||||
rules = tuple(get_rule(i) for i in xrange(3))
|
rules = tuple(get_rule(i) for i in xrange(3))
|
||||||
assert o.rules == rules
|
assert o.rules == rules
|
||||||
|
|
||||||
def test_default(self):
|
def test_get_default(self):
|
||||||
"""
|
"""
|
||||||
Tests the `public.Option.default` method.
|
Tests the `public.Option.get_default` method.
|
||||||
"""
|
"""
|
||||||
|
assert 'get_default' in self.cls.__public__
|
||||||
assert 'default' in self.cls.__public__
|
assert 'default' in self.cls.__public__
|
||||||
assert self.cls().default() is None
|
assert 'default_from' in self.cls.__public__
|
||||||
|
assert self.cls().get_default() is None
|
||||||
|
class subclass(self.cls):
|
||||||
|
default = 3
|
||||||
|
default_from = public.DefaultFrom(
|
||||||
|
lambda a,b: a * b,
|
||||||
|
'key0', 'key1'
|
||||||
|
)
|
||||||
|
o = subclass()
|
||||||
|
assert o.get_default() == 3
|
||||||
|
assert o.get_default(key0=2, key1=5) == 10
|
||||||
|
assert o.get_default(key0=7) == 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class test_Command(ClassChecker):
|
class test_Command(ClassChecker):
|
||||||
|
|||||||
Reference in New Issue
Block a user