From: Sebastian Spaeth Date: Mon, 26 Nov 2012 13:55:33 +0000 (+0100) Subject: Implement licenses.get_license_by_url X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=138a18fd6ed18b7415bc3bdcf9c0300c3d6a8c85;p=mediagoblin.git Implement licenses.get_license_by_url Rather than exploding in the user's face (for example if we custom-configure licenses in our MG instance, and there are still media with now "unknown" licenses in the db), simply return a License object as a fallback, where all attributes are set to the URL we were handed. Signed-off-by: Sebastian Spaeth --- diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py index 7b4bafce..a8436c70 100644 --- a/mediagoblin/db/mixin.py +++ b/mediagoblin/db/mixin.py @@ -139,7 +139,7 @@ class MediaEntryMixin(object): def get_license_data(self): """Return license dict for requested license""" - return licenses.SUPPORTED_LICENSES[self.license or ""] + return licenses.get_license_by_url(self.license or "") def exif_display_iter(self): from mediagoblin.tools.exif import USEFUL_TAGS diff --git a/mediagoblin/tools/licenses.py b/mediagoblin/tools/licenses.py index cda3c1f6..a964980e 100644 --- a/mediagoblin/tools/licenses.py +++ b/mediagoblin/tools/licenses.py @@ -50,6 +50,16 @@ SORTED_LICENSES = [ SUPPORTED_LICENSES = dict(((l.uri, l) for l in SORTED_LICENSES)) +def get_license_by_url(url): + """Look up a license by its url and return the License object""" + try: + return SUPPORTED_LICENSES[url] + except KeyError: + # in case of an unknown License, just display the url given + # rather than exploding in the user's face. + return License(url, url, url) + + def licenses_as_choices(): """List of (uri, abbreviation) tuples for HTML choice field population