Make path handling less horrific.

This commit is contained in:
Flancian 2020-11-07 19:38:01 +01:00
parent 61375d8ba7
commit 39453d8b07
3 changed files with 16 additions and 4 deletions

View file

@ -16,8 +16,10 @@ import datetime
from flask import Blueprint, url_for, render_template, current_app, Response, redirect from flask import Blueprint, url_for, render_template, current_app, Response, redirect
from markupsafe import escape from markupsafe import escape
from . import db from . import db
from . import config
bp = Blueprint('agora', __name__) bp = Blueprint('agora', __name__)
@bp.route('/') @bp.route('/')
def index(): def index():
return render_template('index.html', help=url_for('agora.help'), nodes=url_for('agora.nodes'), journals=url_for('agora.journals')) return render_template('index.html', help=url_for('agora.help'), nodes=url_for('agora.nodes'), journals=url_for('agora.journals'))
@ -30,6 +32,7 @@ def help():
@bp.route('/notes') # alias for now @bp.route('/notes') # alias for now
@bp.route('/nodes') @bp.route('/nodes')
def nodes(): def nodes():
current_app.logger.warning('Config: %s' % config.AGORA_PATH)
return render_template('nodes.html', nodes=db.all_nodes()) return render_template('nodes.html', nodes=db.all_nodes())
@bp.route('/journals') @bp.route('/journals')
@ -57,6 +60,12 @@ def garden(garden):
def wikilink(node): def wikilink(node):
return render_template('nodes_rendered.html', wikilink=node, nodes=db.nodes_by_wikilink(node), backlinks=db.nodes_by_outlink(node)) return render_template('nodes_rendered.html', wikilink=node, nodes=db.nodes_by_wikilink(node), backlinks=db.nodes_by_outlink(node))
@bp.route('/asset/<user>/<asset>')
def asset(user, asset):
# An asset is a binary in someone's garden/<user>/assets directory.
path = '/'.join(["garden", user, 'assets', asset])
return current_app.send_static_file(path)
@bp.route('/raw/<node>') @bp.route('/raw/<node>')
def raw(node): def raw(node):
# hack hack # hack hack

3
app/config.py Normal file
View file

@ -0,0 +1,3 @@
import os
import getpass
AGORA_PATH = os.path.join('/home', getpass.getuser(), 'agora')

View file

@ -15,9 +15,9 @@
import glob import glob
import re import re
import os import os
from . import config
from operator import attrgetter from operator import attrgetter
BASE = '../../agora/'
RE_WIKILINKS = re.compile('\[\[(.*?)\]\]') RE_WIKILINKS = re.compile('\[\[(.*?)\]\]')
class Node: class Node:
@ -30,7 +30,7 @@ class Node:
self.outlinks = content_to_outlinks(self.content) self.outlinks = content_to_outlinks(self.content)
def path_to_url(path): def path_to_url(path):
return os.path.split(path)[0].replace(BASE, '') return path.replace(config.AGORA_PATH + '/', '')
def path_to_wikilink(path): def path_to_wikilink(path):
return os.path.splitext(os.path.basename(path))[0] return os.path.splitext(os.path.basename(path))[0]
@ -44,12 +44,12 @@ def content_to_outlinks(content):
return [] return []
def all_nodes(): def all_nodes():
l = sorted([f for f in glob.glob(BASE + '**/*.md', recursive=True)]) l = sorted([f for f in glob.glob(os.path.join(config.AGORA_PATH, '**/*.md'), recursive=True)])
return [Node(f) for f in l] return [Node(f) for f in l]
def all_journals(): def all_journals():
# hack hack. # hack hack.
l = sorted([f for f in glob.glob(BASE + '**/????-??-??.md', recursive=True)]) l = sorted([f for f in glob.glob(os.path.join(config.AGORA_PATH, '**/????-??-??.md'), recursive=True)])
return sorted([Node(f) for f in l], key=attrgetter('wikilink'), reverse=True) return sorted([Node(f) for f in l], key=attrgetter('wikilink'), reverse=True)
def nodes_by_wikilink(wikilink): def nodes_by_wikilink(wikilink):