diff --git management/univention-directory-reports/modules/univention/directory/reports/interpreter.py management/univention-directory-reports/modules/univention/directory/reports/interpreter.py index 855c1a29931..991f37db7f9 100644 --- management/univention-directory-reports/modules/univention/directory/reports/interpreter.py +++ management/univention-directory-reports/modules/univention/directory/reports/interpreter.py @@ -175,7 +175,23 @@ def attribute(self, token, base): token.value = token.attrs.get('default', '') else: sep = token.attrs.get('separator', ', ') - token.value = sep.join(value) + inner_separator = token.attrs.get('inner-separator', ' ') + + if base.descriptions[token.attrs['name']].multivalue: + if all(isinstance(element, (list, tuple)) for element in value): + if all(isinstance(v, str) for element in value for v in element): + value = [inner_separator.join(element) for element in value] + else: + value = [inner_separator.join([str(v) for v in element]) for element in value] + elif not all(isinstance(element, str) for element in value): + value = [str(element) for element in value] + token.value = sep.join(value) + else: + if isinstance(value, (list, tuple)): + if all(isinstance(v, str) for v in value): + token.value = inner_separator.join(value) + else: + token.value = inner_separator.join([str(v) for v in value]) else: token.value = value elif 'default' in token.attrs: