Use correct super-calls in get_args() methods

The get_args methods in ipalib.crud and ipalib.plugins.baseldap used
super() calls that skipped some of the classes in the inheritance
chain, and contained code that reimplemented some of the skipped
functionality.
This made it difficult to customize the get_args behavior.

Use proper super() calls.
This commit is contained in:
Petr Viktorin 2013-10-02 15:16:38 +02:00
parent 1acd00487f
commit 295ce7bf18
2 changed files with 21 additions and 24 deletions

View File

@ -120,7 +120,10 @@ Note that the above are all equal.
"""
from frontend import Method, Object
import backend, frontend, parameters, output
import backend
import parameters
import output
from ipalib.text import _
class Create(Method):
@ -133,6 +136,8 @@ class Create(Method):
def get_args(self):
if self.obj.primary_key:
yield self.obj.primary_key.clone(attribute=True)
for arg in super(Create, self).get_args():
yield arg
def get_options(self):
if self.extra_options_first:
@ -164,6 +169,8 @@ class PKQuery(Method):
# Don't enforce rules on the primary key so we can reference
# any stored entry, legal or not
yield self.obj.primary_key.clone(attribute=True, query=True)
for arg in super(PKQuery, self).get_args():
yield arg
class Retrieve(PKQuery):
@ -230,7 +237,11 @@ class Search(Method):
has_output = output.standard_list_of_entries
def get_args(self):
yield parameters.Str('criteria?', noextrawhitespace=False)
yield parameters.Str(
'criteria?', noextrawhitespace=False,
doc=_('A string searched in all relevant object attributes'))
for arg in super(Search, self).get_args():
yield arg
def get_options(self):
if self.extra_options_first:

View File

@ -991,12 +991,9 @@ class LDAPCreate(BaseLDAPCommand, crud.Create):
takes_options = (BaseLDAPCommand.setattr_option, BaseLDAPCommand.addattr_option)
def get_args(self):
#pylint: disable=E1003
for key in self.obj.get_ancestor_primary_keys():
yield key
if self.obj.primary_key:
yield self.obj.primary_key.clone(attribute=True)
for arg in super(crud.Create, self).get_args():
for arg in super(LDAPCreate, self).get_args():
yield arg
has_output_params = global_output_params
@ -1135,12 +1132,9 @@ class LDAPQuery(BaseLDAPCommand, crud.PKQuery):
Base class for commands that need to retrieve an existing entry.
"""
def get_args(self):
#pylint: disable=E1003
for key in self.obj.get_ancestor_primary_keys():
yield key
if self.obj.primary_key:
yield self.obj.primary_key.clone(attribute=True, query=True)
for arg in super(crud.PKQuery, self).get_args():
for arg in super(LDAPQuery, self).get_args():
yield arg
# list of attributes we want exported to JSON
@ -1167,15 +1161,11 @@ class LDAPMultiQuery(LDAPQuery):
)
def get_args(self):
#pylint: disable=E1003
for key in self.obj.get_ancestor_primary_keys():
yield key
if self.obj.primary_key:
yield self.obj.primary_key.clone(
attribute=True, query=True, multivalue=True
)
for arg in super(crud.PKQuery, self).get_args():
yield arg
for arg in super(LDAPMultiQuery, self).get_args():
if self.obj.primary_key and arg.name == self.obj.primary_key.name:
yield arg.clone(multivalue=True)
else:
yield arg
class LDAPRetrieve(LDAPQuery):
@ -1758,13 +1748,9 @@ class LDAPSearch(BaseLDAPCommand, crud.Search):
)
def get_args(self):
#pylint: disable=E1003
for key in self.obj.get_ancestor_primary_keys():
yield key
yield Str('criteria?',
noextrawhitespace=False,
doc=_('A string searched in all relevant object attributes'))
for arg in super(crud.Search, self).get_args():
for arg in super(LDAPSearch, self).get_args():
yield arg
def get_member_options(self, attr):