From d6f3742cbab77f2aa9ae39fb1f756977a915ee73 Mon Sep 17 00:00:00 2001 From: Lukas Oyen Date: Mon, 30 Jan 2017 14:52:49 +0100 Subject: [PATCH] Bug #36480: ad-connector deduplicate UCS LDAP attribute values --- .../modules/univention/connector/__init__.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/services/univention-ad-connector/modules/univention/connector/__init__.py b/services/univention-ad-connector/modules/univention/connector/__init__.py index 8c039e6..d51530f 100644 --- a/services/univention-ad-connector/modules/univention/connector/__init__.py +++ b/services/univention-ad-connector/modules/univention/connector/__init__.py @@ -36,6 +36,7 @@ import string import os import cPickle import types +import collections import random import traceback import copy @@ -1061,7 +1062,14 @@ class ucs: else: equal = compare[0] == compare[1] if not equal: - ucs_object[ucs_key] = value + # This is deduplication of LDAP attribute values for S4 -> UCS. + # It preserves ordering of the attribute values which is + # important for the handling of `con_other_attribute`. + if isinstance(value, list): + ucs_object[ucs_key] = list(collections.OrderedDict.fromkeys(value)) + else: + ucs_object[ucs_key] = value + ud.debug(ud.LDAP, ud.INFO, "set key in ucs-object: %s" % ucs_key) else: ud.debug(ud.LDAP, ud.WARN, '__set_values: no ucs_attribute found in %s' % attributes) -- 2.7.4