def check_single_type_duplicates() -> List[List[str]]: from openatlas.models.node import Node from openatlas.models.entity import Entity data = [] for node in g.nodes.values(): if node.root or node.multiple or node.value_type: continue # pragma: no cover node_ids = Node.get_all_sub_ids(node) if not node_ids: continue # pragma: no cover for id_ in Db.check_single_type_duplicates(node_ids): offending_nodes = [] entity = Entity.get_by_id(id_, nodes=True) for entity_node in entity.nodes: if g.nodes[entity_node.root[-1]].id != node.id: continue # pragma: no cover offending_nodes.append( '<a href="{url}">{label}</a> {name}'.format( label=uc_first(_('remove')), name=entity_node.name, url=url_for('admin_delete_single_type_duplicate', entity_id=entity.id, node_id=entity_node.id))) data.append([ link(entity), entity.class_.name, link(g.nodes[node.id]), '<br><br><br><br><br>'.join(offending_nodes) ]) return data
def check_single_type_duplicates() -> list[dict[str, Any]]: from openatlas.models.type import Type from openatlas.models.entity import Entity data = [] for type_ in g.types.values(): if type_.root or type_.multiple or type_.category == 'value': continue # pragma: no cover type_ids = Type.get_all_sub_ids(type_) if not type_ids: continue # pragma: no cover for id_ in Db.check_single_type_duplicates(type_ids): offending_types = [] entity = Entity.get_by_id(id_, types=True) for entity_types in entity.types: if g.types[entity_types.root[0]].id != type_.id: continue # pragma: no cover offending_types.append(entity_types) data.append({ 'entity': entity, 'type': type_, 'offending_types': offending_types }) return data