diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-25 01:44:53 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-25 01:44:53 +0000 |
commit | 54c97b494880a3d276e2da69ffde55a3ee475616 (patch) | |
tree | aaa9202745eba74e9950c5142d8998d0fd978642 /ipalib/frontend.py | |
parent | 426742279348765d27ad66c69bea874398ed0ef4 (diff) | |
download | freeipa-54c97b494880a3d276e2da69ffde55a3ee475616.tar.gz freeipa-54c97b494880a3d276e2da69ffde55a3ee475616.tar.xz freeipa-54c97b494880a3d276e2da69ffde55a3ee475616.zip |
359: Added Object.primary_key instance attribute; added corresponding unit tests
Diffstat (limited to 'ipalib/frontend.py')
-rw-r--r-- | ipalib/frontend.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py index 948b047dd..40220074e 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -514,10 +514,12 @@ class Object(plugable.Plugin): 'methods', 'properties', 'params' + 'primary_key', )) methods = None properties = None params = None + primary_key = None takes_params = tuple() def set_api(self, api): @@ -531,6 +533,16 @@ class Object(plugable.Plugin): self.params = plugable.NameSpace( self.__get_params(), sort=False ) + pkeys = filter(lambda p: p.primary_key, self.params()) + if len(pkeys) > 1: + raise ValueError( + '%s (Object) has multiple primary keys: %s' % ( + self.name, + ', '.join(p.name for p in pkeys), + ) + ) + if len(pkeys) == 1: + self.primary_key = pkeys[0] def __get_attrs(self, name): namespace = getattr(self.api, name) |