From 3c9bc8a0acdba21387e39f8ab616ea51ceb0d8a9 Mon Sep 17 00:00:00 2001 From: kakwa Date: Tue, 26 Feb 2019 23:55:43 +0100 Subject: [PATCH] more complete content for self.backend_attributes in attributes class * pass additional information in a dictionary (the type) * manage multiple declaration of a given backend attribute (content could be lists, not only a lonely string) --- ldapcherry/attributes.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ldapcherry/attributes.py b/ldapcherry/attributes.py index 5ddea82..dee4573 100644 --- a/ldapcherry/attributes.py +++ b/ldapcherry/attributes.py @@ -61,9 +61,27 @@ class Attributes: self.key = attrid for b in attr['backends']: self.backends.add(b) + backend_attr = attr['backends'][b] if b not in self.backend_attributes: self.backend_attributes[b] = {} - self.backend_attributes[b][attr['backends'][b]] = attrid + if backend_attr in self.backend_attributes[b]: + if type(self.backend_attributes[b][backend_attr]) \ + is not list: + self.backend_attributes[b][backend_attr] = [ + self.backend_attributes[b][backend_attr], + ] + + self.backend_attributes[b][backend_attr].append( + { + 'id':attrid, + 'type': attr['type'] + } + ) + else: + self.backend_attributes[b][backend_attr] = { + 'id':attrid, + 'type': attr['type'] + } if 'search_displayed' in attr and attr['search_displayed']: self.displayed_attributes[attrid] = attr