1
from werkzeug.exceptions import NotFound
2
from werkzeug.utils import redirect
5
from .utils import expose
6
from .utils import Pagination
7
from .utils import render_template
8
from .utils import url_for
9
from .utils import validate_url
15
if request.method == "POST":
16
url = request.form.get("url")
17
alias = request.form.get("alias")
18
if not validate_url(url):
19
error = "I'm sorry but you cannot shorten this URL."
22
error = "Your alias is too long"
24
error = "Your alias might not include a slash"
26
error = "The alias you have requested exists already"
30
public="private" not in request.form,
31
shorty_id=alias if alias else None,
35
return redirect(url_for("display", uid=uid))
36
return render_template("new.html", error=error, url=url)
39
@expose("/display/<uid>")
40
def display(request, uid):
44
return render_template("display.html", url=url)
48
def link(request, uid):
52
return redirect(url.target, 301)
55
@expose("/list/", defaults={"page": 1})
56
@expose("/list/<int:page>")
57
def list(request, page):
63
code = """function(doc) { if (doc.public){ map([doc._id], doc); }}"""
64
docResults = URL.query(code)
65
results = [wrap(doc) for doc in docResults]
66
pagination = Pagination(results, 1, page, "list")
67
if pagination.page > 1 and not pagination.entries:
69
return render_template("list.html", pagination=pagination)
72
def not_found(request):
73
return render_template("not_found.html")