Fix [generator] relations

pull/926/head
niclas 2024-01-31 13:52:04 +01:00
parent 45bd5f7ddb
commit 65b87b53fe
1 changed files with 26 additions and 12 deletions

View File

@ -102,7 +102,8 @@ class Galaxy():
uuid=cluster.get('uuid', None), uuid=cluster.get('uuid', None),
date=cluster.get('date', None), date=cluster.get('date', None),
related_list=cluster.get('related', None), related_list=cluster.get('related', None),
meta=cluster.get('meta', None) meta=cluster.get('meta', None),
galaxie=self.name
)) ))
return clusters return clusters
@ -119,7 +120,7 @@ class Galaxy():
return self.entry return self.entry
class Cluster(): class Cluster():
def __init__(self, description, uuid, date, value, related_list, meta): def __init__(self, description, uuid, date, value, related_list, meta, galaxie):
self.description = description self.description = description
self.uuid = uuid self.uuid = uuid
self.date = date self.date = date
@ -127,6 +128,7 @@ class Cluster():
self.related_list = related_list self.related_list = related_list
self.meta = meta self.meta = meta
self.entry = "" self.entry = ""
self.galaxie = galaxie
def _create_title_entry(self): def _create_title_entry(self):
self.entry += f'## {self.value}\n' self.entry += f'## {self.value}\n'
@ -198,11 +200,15 @@ class Cluster():
visited = set() visited = set()
related_clusters = [] related_clusters = []
if depth == 0 or not self.related_list: if depth == 0 or not self.related_list or self.uuid in visited:
return related_clusters return related_clusters
visited.add(self.uuid)
for cluster in self.related_list: for cluster in self.related_list:
dest_uuid = cluster["dest-uuid"] dest_uuid = cluster["dest-uuid"]
# Cluster is private
if dest_uuid not in cluster_dict: if dest_uuid not in cluster_dict:
# Check if UUID is empty # Check if UUID is empty
if not dest_uuid: if not dest_uuid:
@ -211,27 +217,28 @@ class Cluster():
private_relations_count += 1 private_relations_count += 1
if dest_uuid not in private_clusters: if dest_uuid not in private_clusters:
private_clusters.append(dest_uuid) private_clusters.append(dest_uuid)
related_clusters.append((self, Cluster(value="Private Cluster", uuid=dest_uuid, date=None, description=None, related_list=None, meta=None))) related_clusters.append((self, Cluster(value="Private Cluster", uuid=dest_uuid, date=None, description=None, related_list=None, meta=None, galaxie=None)))
continue continue
if dest_uuid in visited:
continue
visited.add(dest_uuid)
related_cluster = cluster_dict[dest_uuid] related_cluster = cluster_dict[dest_uuid]
public_relations_count += 1 public_relations_count += 1
if dest_uuid not in public_clusters: if dest_uuid not in public_clusters:
public_clusters.append(dest_uuid) public_clusters.append(dest_uuid)
related_clusters.append((self, related_cluster))
if depth > 1 or depth == -1: related_clusters.append((self, related_cluster))
if (depth > 1 or depth == -1) and related_cluster.uuid not in visited:
new_depth = depth - 1 if depth > 1 else -1 new_depth = depth - 1 if depth > 1 else -1
related_clusters += related_cluster.get_related_clusters(depth=new_depth, visited=visited) related_clusters += related_cluster.get_related_clusters(depth=new_depth, visited=visited)
if empty_uuids > 0: if empty_uuids > 0:
empty_uuids_dict[self.value] = empty_uuids empty_uuids_dict[self.value] = empty_uuids
for cluster in related_clusters: for cluster in related_clusters:
if (cluster[1], cluster[0]) in related_clusters: if (cluster[1], cluster[0]) in related_clusters:
related_clusters.remove(cluster) related_clusters.remove(cluster)
return related_clusters return related_clusters
def _create_related_entry(self): def _create_related_entry(self):
@ -277,9 +284,6 @@ for galaxy in galaxies:
for cluster in galaxy.clusters: for cluster in galaxy.clusters:
cluster_dict[cluster.uuid] = cluster cluster_dict[cluster.uuid] = cluster
# test = cluster_dict['f0ec2df5-2e38-4df3-970d-525352006f2e']
# print(test.get_related_clusters())
def create_index(intro, contributing, galaxies): def create_index(intro, contributing, galaxies):
index_output = intro index_output = intro
for galaxie in galaxies: for galaxie in galaxies:
@ -327,3 +331,13 @@ if __name__ == "__main__":
print(f"Number of empty UUIDs: {sum(empty_uuids_dict.values())}") print(f"Number of empty UUIDs: {sum(empty_uuids_dict.values())}")
print(f"Empty UUIDs per cluster: {empty_uuids_dict}") print(f"Empty UUIDs per cluster: {empty_uuids_dict}")
# test = cluster_dict['f0ec2df5-2e38-4df3-970d-525352006f2e']
# test = cluster_dict['d7247cf9-13b6-4781-b789-a5f33521633b']
# clusters = test.get_related_clusters()
# print(clusters)
# print(len(clusters))
# print("```mermaid")
# print(f"graph TD")
# for cluster in clusters:
# print(f"{cluster[0].uuid}[{cluster[0].value}] --- {cluster[1].uuid}[{cluster[1].value}]")
# print("```")