def register_redirect(original, new_url): """Register a new redirect. Also an old one that may still exist.""" original = _strip_url(original) db.execute(redirects.delete(original=original)) db.execute(redirects.insert(), dict( original=original, new=_strip_url(new_url) ))
def lookup_redirect(url): """Looks up a redirect. If there is not redirect for the given URL, the return value is `None`. """ row = db.execute(redirects.select( redirects.c.original == _strip_url(url) )).fetchone() if row: return make_external_url(row.new)
def get_redirect_map(): """Return a dict of all redirects.""" return dict((row.original, make_external_url(row.new)) for row in db.execute(redirects.select()))
def unregister_redirect(url): """Unregister a redirect.""" rv = db.execute(redirects.delete(redirects.c.original == _strip_url(url))) if not rv.rowcount: raise ValueError('no such URL')