def from_dict(cls, view_as_dict: Dict, cube_name: str = None) -> 'NativeView': titles, columns, rows = [], [], [] for selection in view_as_dict['Titles']: if selection['Subset']['Name'] == '': subset = AnonymousSubset.from_dict(selection['Subset']) else: subset = Subset.from_dict(selection['Subset']) selected = selection['Selected']['Name'] if selection['Selected'] else "" titles.append(ViewTitleSelection(dimension_name=subset.dimension_name, subset=subset, selected=selected)) for i, axe in enumerate([view_as_dict['Columns'], view_as_dict['Rows']]): for selection in axe: if selection['Subset']['Name'] == '': subset = AnonymousSubset.from_dict(selection['Subset']) else: subset = Subset.from_dict(selection['Subset']) axis_selection = ViewAxisSelection(dimension_name=subset.dimension_name, subset=subset) columns.append(axis_selection) if i == 0 else rows.append(axis_selection) return cls( cube_name=view_as_dict["@odata.context"][20:view_as_dict["@odata.context"].find("')/")] if not cube_name else cube_name, view_name=view_as_dict['Name'], suppress_empty_columns=view_as_dict['SuppressEmptyColumns'], suppress_empty_rows=view_as_dict['SuppressEmptyRows'], format_string=view_as_dict['FormatString'], titles=titles, columns=columns, rows=rows)
def substitute_title(self, dimension: str, element: str): for title in self._titles: if case_and_space_insensitive_equals(title.dimension_name, dimension): title._subset = AnonymousSubset(dimension, dimension, elements=[element]) title._selected = element return raise ValueError(f"Dimension '{dimension}' not found in titles")