#!/usr/bin/env python3 from jinja2 import Environment import sqlite3 con = sqlite3.connect('new_eden.db') cur = con.cursor() def genLabel(name): name = str.replace(name, "-","") name = str.replace(name, " ","") return name def id2name(id): r = cur.execute("SELECT * FROM systems WHERE id="+str(id)) row = r.fetchone() return row[1] systems = [] deps = [] processed = [] r = cur.execute("SELECT distinct id FROM systems WHERE region_id=10000027") for system in r.fetchall(): processed.append(system[0]) temp_systems = {} temp_systems['name'] = id2name(system[0]) temp_systems['label']= genLabel(id2name(system[0])) temp_gateways = [] r = cur.execute( "SELECT systen_id_to FROM gates WHERE system_id_from="+str(system[0]) ) for gateway in r.fetchall(): temp_gateways.append(genLabel(id2name(gateway[0]))) deps.append(gateway[0]) temp_systems['gateways'] = temp_gateways systems.append(temp_systems) for dep in deps: if not dep in processed: temp_systems = {} temp_systems['name'] = id2name(dep) temp_systems['label']= genLabel(id2name(dep)) processed.append(dep) systems.append(temp_systems) con.close() template = """ digraph {{name}} { concentrate=true layout=sfdp overlap = false; splines = true; {% for system in systems %} "{{system.label}}" [label="{{system.name}}", URL="https://evemaps.dotlan.net/system/{{system.name}}"] {% for gateway in system.gateways %} "{{system.label}}" -> "{{gateway}}" [arrowhead="none"]; {% endfor %}{% endfor %} } """ print(Environment().from_string(template).render(systems=systems)) # print(systems)