1
0
mirror of https://github.com/quay/quay.git synced 2026-01-27 18:42:52 +03:00
Files
quay/tools/relationships.py
Kenny Lee Sin Cheong 5f63b3a7bb chore: drop deprecated tables and remove unused code (PROJQUAY-522) (#2089)
* chore: drop deprecated tables and remove unused code

* isort imports

* migration: check for table existence before drop
2023-08-25 12:17:24 -04:00

43 lines
1.3 KiB
Python

from data.database import Repository, TeamMember, User
def fix_ident(ident):
return str(ident).translate(None, "-/.")
with open("outfile.dot", "w") as outfile:
outfile.write("digraph relationships {\n")
for repo in Repository.select():
ns = fix_ident(repo.namespace_user.username)
outfile.write("%s_%s -> %s\n" % (ns, fix_ident(repo.name), ns))
teams_in_orgs = set()
for member in TeamMember.select():
if "+" in member.user.username:
continue
org_name = fix_ident(member.team.organization.username)
team_to_org = (member.team.name, member.team.organization.username)
if not team_to_org in teams_in_orgs:
teams_in_orgs.add(team_to_org)
outfile.write("%s_%s -> %s\n" % (org_name, fix_ident(member.team.name), org_name))
team_name = fix_ident(member.team.name)
outfile.write("%s -> %s_%s\n" % (fix_ident(member.user.username), org_name, team_name))
outfile.write("%s_%s [shape=box]\n" % (org_name, team_name))
for user in User.select():
if "+" in user.username:
continue
if user.organization:
outfile.write("%s [shape=circle]\n" % fix_ident(user.username))
else:
outfile.write("%s [shape=triangle]\n" % fix_ident(user.username))
outfile.write("}")