allow span pointers to be used as URLs

This commit is contained in:
Edward Betts 2017-02-20 11:24:31 +00:00
parent 5cdc4202e9
commit 9cfe7cd06b

View file

@ -1,5 +1,5 @@
from flask import (Blueprint, render_template, request, redirect, flash,
url_for, abort, jsonify)
url_for, abort, jsonify, Response)
from flask_login import (login_user, current_user, logout_user,
login_required, LoginManager)
from .forms import (LoginForm, SignupForm, AccountSettingsForm,
@ -18,6 +18,7 @@ import re
login_manager = LoginManager()
login_manager.login_view = '.login'
re_paragraph = re.compile(r'(?:\r\n|\r|\n){2,}')
re_spanpointer = re.compile(r'([A-Za-z0-9]+),start=(\d+),length=(\d+)')
bp = Blueprint('view', __name__)
def init_app(app):
@ -55,7 +56,6 @@ def show_errors(f):
@bp.route('/')
def home():
titles = XanaLink.get_all_titles()
docs = Item.query.order_by(Item.created)
return render_template('home.html', docs=docs)
@ -139,6 +139,12 @@ def view_edl(username, hashid):
@bp.route('/<username>/<hashid>')
def view_item(username, hashid):
if ',' in hashid:
m = re_spanpointer.match(hashid)
hashid, start, length = m.group(1), int(m.group(2)), int(m.group(3))
item = get_item(username, hashid)
return Response(item.text[start:length + start], mimetype='text/plain')
item = get_item(username, hashid)
if item.type == 'xanadoc':
return view_xanadoc(item)