From 7d007f028396ba733bb4b8492bc078cba293e02f Mon Sep 17 00:00:00 2001 From: Maximilian Blochberger Date: Fri, 12 Mar 2021 09:35:02 +0100 Subject: [PATCH] Fix error handling of dblptex command DBLP does not return a HTTP status code indicating that there is an error but an error page instead. This is now checked by looking at the content type. If something else than bibtex is returned, error out. --- sok/management/commands/dblptex.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sok/management/commands/dblptex.py b/sok/management/commands/dblptex.py index ed7c7b8..85890b8 100644 --- a/sok/management/commands/dblptex.py +++ b/sok/management/commands/dblptex.py @@ -1,6 +1,6 @@ import requests -from django.core.management.base import BaseCommand, CommandParser +from django.core.management.base import BaseCommand, CommandError, CommandParser import sok.management.commands.dblpimport as dblp @@ -17,4 +17,10 @@ class Command(BaseCommand): url = f'https://dblp.uni-trier.de/rec/{key}.bib?param=0' response = requests.get(url) response.raise_for_status + + # The status does not necessarily indicate success, but returns an error + # page instead. + if 'application/x-bibtex' not in response.headers['Content-Type']: + raise CommandError(url) + self.stdout.write(response.content.decode())