From aa45ec616a0c49a9cedd32fb24aa4a56f69a6586 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Fri, 26 Sep 2008 02:43:11 +0000 Subject: 369: Added Object.backend attribute used to associated it with a particular backend component --- ipalib/frontend.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'ipalib/frontend.py') diff --git a/ipalib/frontend.py b/ipalib/frontend.py index c95397aa..da04cd7a 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -511,17 +511,22 @@ class Command(plugable.Plugin): class Object(plugable.Plugin): __public__ = frozenset(( + 'backend', 'methods', 'properties', 'params', 'primary_key', 'params_minus_pk', )) + backend = None methods = None properties = None params = None primary_key = None params_minus_pk = None + + # Can override in subclasses: + backend_name = None takes_params = tuple() def set_api(self, api): @@ -549,8 +554,13 @@ class Object(plugable.Plugin): filter(lambda p: not p.primary_key, self.params()), sort=False ) + if 'Backend' in self.api and self.backend_name in self.api.Backend: + self.backend = self.api.Backend[self.backend_name] + def __get_attrs(self, name): - namespace = getattr(self.api, name) + if name not in self.api: + return + namespace = self.api[name] assert type(namespace) is plugable.NameSpace for proxy in namespace(): # Equivalent to dict.itervalues() if proxy.obj_name == self.name: -- cgit