Prepare for future web+ganarchy URI handlers

This commit is contained in:
SoniEx2 2019-04-22 18:59:02 -03:00
parent c02d1fb183
commit 828d0ac9cf
1 changed files with 26 additions and 7 deletions

View File

@ -50,14 +50,19 @@ TEMPLATE = """<!DOCTYPE html>
</head> </head>
<body> <body>
<h1>{{ project_title|e }}</h1> <h1>{{ project_title|e }}</h1>
<p>Tracking <span id="project_commit">{{ project_commit }}</span></p> <p>Tracking <span id="project_commit"><a href="web+ganarchy://{{ project_commit }}">{{ project_commit }}</a></span></p>
<div id="project_body"><p>{{ project_body|e|replace("\n\n", "</p><p>") }}</p></div> <div id="project_body"><p>{{ project_body|e|replace("\n\n", "</p><p>") }}</p></div>
<ul> <ul>
{% for url, msg, img in repos -%} {% for url, msg, img in repos -%}
<li><a href="{{ url|e }}">{{ url|e }}</a>: {{ msg|e }}</li> <li><a href="{{ url|e }}">{{ url|e }}</a>: {{ msg|e }}</li>
{%- endfor %} {%- endfor %}
</ul> </ul>
Powered by <a href="https://ganarchy.autistic.space/">GAnarchy</a>. AGPLv3-licensed. <a href="https://cybre.tech/SoniEx2/ganarchy">Source Code</a>. <p>Powered by <a href="https://ganarchy.autistic.space/">GAnarchy</a>. AGPLv3-licensed. <a href="https://cybre.tech/SoniEx2/ganarchy">Source Code</a>.</p>
<p>
<a href="/">Main page</a>.
<!-- commented out because browsers suck :( -->
<!--<a href="{{ base_url|e }}" onclick="event.preventDefault(); navigator.registerProtocolHandler('web+ganarchy', this.href + 'project/%s', 'GAnarchy');">Register web+ganarchy:// handler</a>.-->
</p>
</body> </body>
</html> </html>
""" """
@ -92,8 +97,8 @@ def initdb():
c.execute('''CREATE INDEX active_key ON repos (active)''') c.execute('''CREATE INDEX active_key ON repos (active)''')
c.execute('''CREATE TABLE repo_history (entry INTEGER PRIMARY KEY ASC AUTOINCREMENT, url TEXT, count INTEGER, head_commit TEXT)''') c.execute('''CREATE TABLE repo_history (entry INTEGER PRIMARY KEY ASC AUTOINCREMENT, url TEXT, count INTEGER, head_commit TEXT)''')
c.execute('''CREATE INDEX url_key ON repo_history (url)''') c.execute('''CREATE INDEX url_key ON repo_history (url)''')
c.execute('''CREATE TABLE config (git_commit TEXT)''') c.execute('''CREATE TABLE config (git_commit TEXT, base_url TEXT)''')
c.execute('''INSERT INTO config VALUES ('')''') c.execute('''INSERT INTO config VALUES ('', '')''')
conn.commit() conn.commit()
conn.close() conn.close()
@ -110,6 +115,16 @@ def set_commit(commit):
conn.commit() conn.commit()
conn.close() conn.close()
@ganarchy.command()
@click.argument('base-url')
def set_base_url(base_url):
"""Sets the GAnarchy instance's base URL"""
conn = sqlite3.connect(data_home + "/ganarchy.db")
c = conn.cursor()
c.execute('''UPDATE config SET base_url=?''', (base_url,))
conn.commit()
conn.close()
@ganarchy.group() @ganarchy.group()
def repo(): def repo():
"""Modifies repos to track""" """Modifies repos to track"""
@ -187,8 +202,11 @@ def cron_target():
subprocess.call(["git", "-C", cache_home, "init", "-q"]) subprocess.call(["git", "-C", cache_home, "init", "-q"])
conn = sqlite3.connect(data_home + "/ganarchy.db") conn = sqlite3.connect(data_home + "/ganarchy.db")
c = conn.cursor() c = conn.cursor()
c.execute('''SELECT git_commit FROM config''') c.execute('''SELECT git_commit, base_url FROM config''')
(project_commit,) = c.fetchone() (project_commit, base_url) = c.fetchone()
if not base_url or not project_commit:
click.echo("No base URL or project commit specified", err=True)
return
entries = [] entries = []
generate_html = [] generate_html = []
for (e, url,) in c.execute("""SELECT max(e), url FROM (SELECT max(T1.entry) e, T1.url FROM repo_history T1 for (e, url,) in c.execute("""SELECT max(e), url FROM (SELECT max(T1.entry) e, T1.url FROM repo_history T1
@ -224,7 +242,8 @@ def cron_target():
project_desc = project_desc, project_desc = project_desc,
project_body = project, project_body = project,
project_commit = project_commit, project_commit = project_commit,
repos = html_entries)) repos = html_entries,
base_url = base_url))
if __name__ == "__main__": if __name__ == "__main__":
ganarchy() ganarchy()