Work around HTTPError status code issues

It turned out that bottle.py is not backwards-compatible with the status code
change: older versions encode the status in e.status; newer ones use
e.status_code (and e.status became a string).

This patch works around that by trying to pick up which of the two variants we
have, and deciding accordingly.

Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
This commit is contained in:
Alberto Bertogli 2013-11-02 23:32:43 +00:00
parent e49c69da2e
commit f6a75820e8

12
git-arr

@ -269,6 +269,16 @@ def static(path):
# Static HTML generation # Static HTML generation
# #
def is_404(e):
"""True if e is an HTTPError with status 404, False otherwise."""
# We need this because older bottle.py versions put the status code in
# e.status as an integer, and newer versions make that a string, and using
# e.status_code for the code.
if isinstance(e.status, int):
return e.status == 404
else:
return e.status_code == 404
def generate(output, skip_index = False): def generate(output, skip_index = False):
"""Generate static html to the output directory.""" """Generate static html to the output directory."""
def write_to(path, func_or_str, args = (), mtime = None): def write_to(path, func_or_str, args = (), mtime = None):
@ -396,7 +406,7 @@ def generate(output, skip_index = False):
# Some repos can have tags pointing to non-commits. This # Some repos can have tags pointing to non-commits. This
# happens in the Linux Kernel's v2.6.11, which points directly # happens in the Linux Kernel's v2.6.11, which points directly
# to a tree. Ignore them. # to a tree. Ignore them.
if e.status_code == 404: if is_404(e):
print('404 in tag %s (%s)' % (tag_name, obj_id)) print('404 in tag %s (%s)' % (tag_name, obj_id))
else: else:
raise raise