Skip to content

Commit

Permalink
Explicitly add elements to leaves hierarchy
Browse files Browse the repository at this point in the history
On dimension update explicitly add elements to leaves hierarchy
that are not included in any other hierarchy.

Fixes #702
  • Loading branch information
MariusWirtz committed Mar 24, 2022
1 parent cd152e3 commit 80a0814
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions TM1py/Services/DimensionService.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,22 @@ def update(self, dimension: Dimension, **kwargs):
else:
self.hierarchies.create(hierarchy, **kwargs)

# Edge case: elements in leaves hierarchy that do not exist in other hierarchies
if "Leaves" in dimension:
existing_leaves = CaseAndSpaceInsensitiveSet(
self.hierarchies.elements.get_leaf_element_names(dimension.name, "Leaves"))

leaves_to_create = list()
for leaf in dimension.get_hierarchy("Leaves"):
if leaf.name not in existing_leaves:
leaves_to_create.append(leaf)

if leaves_to_create:
self.hierarchies.elements.add_elements(
dimension_name=dimension.name,
hierarchy_name="Leaves",
elements=leaves_to_create)

for hierarchy_name in hierarchies_to_be_removed:
if not case_and_space_insensitive_equals(hierarchy_name, "Leaves"):
self.hierarchies.delete(dimension_name=dimension.name, hierarchy_name=hierarchy_name, **kwargs)
Expand Down

0 comments on commit 80a0814

Please sign in to comment.