summaryrefslogtreecommitdiffstats
path: root/ipalib/plugins/baseldap.py
diff options
context:
space:
mode:
authorPavel Zuna <pzuna@redhat.com>2010-08-09 16:45:26 -0400
committerRob Crittenden <rcritten@redhat.com>2010-08-12 09:01:56 -0400
commit5797c8167ae651be3705406584ee443a442e8cd9 (patch)
treeefef117150743fee5d2f1fafa52e686162b48215 /ipalib/plugins/baseldap.py
parent9d9d78991241b5e32420f9fb6be96b2255d26c05 (diff)
downloadfreeipa-5797c8167ae651be3705406584ee443a442e8cd9.tar.gz
freeipa-5797c8167ae651be3705406584ee443a442e8cd9.tar.xz
freeipa-5797c8167ae651be3705406584ee443a442e8cd9.zip
Make LDAPObject classes JSON serializable.
Diffstat (limited to 'ipalib/plugins/baseldap.py')
-rw-r--r--ipalib/plugins/baseldap.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py
index 11fd18ee..52f32e30 100644
--- a/ipalib/plugins/baseldap.py
+++ b/ipalib/plugins/baseldap.py
@@ -21,6 +21,7 @@ Base classes for LDAP plugins.
"""
import re
+import json
from ipalib import crud, errors, uuid
from ipalib import Method, Object
@@ -29,6 +30,7 @@ from ipalib.base import NameSpace
from ipalib.cli import to_cli, from_cli
from ipalib import output
from ipalib.text import _
+from ipalib.util import json_serialize
def validate_add_attribute(ugettext, attr):
@@ -121,6 +123,21 @@ class LDAPObject(Object):
}
)
+ # list of attributes we want exported to JSON
+ json_friendly_attributes = (
+ 'parent_object', 'container_dn', 'object_name', 'object_name_plural',
+ 'object_class', 'object_class_config', 'default_attributes', 'label',
+ 'hidden_attributes', 'uuid_attribute', 'attribute_members', 'name',
+ 'takes_params',
+ )
+ def __json__(self):
+ json_dict = dict(
+ (a, getattr(self, a)) for a in self.json_friendly_attributes
+ )
+ json_dict['primary_key'] = self.primary_key.name
+ json_dict['methods'] = [m for m in self.methods]
+ return json_dict
+
# Options used by create and update.
_attr_options = (