Implement licenses.get_license_by_url
authorSebastian Spaeth <Sebastian@SSpaeth.de>
Mon, 26 Nov 2012 13:55:33 +0000 (14:55 +0100)
committerSebastian Spaeth <Sebastian@SSpaeth.de>
Fri, 30 Nov 2012 13:31:43 +0000 (14:31 +0100)
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 <Sebastian@SSpaeth.de>
mediagoblin/db/mixin.py
mediagoblin/tools/licenses.py

index 7b4bafce939408764e11ee55f8ab30f90d8def5c..a8436c7097398566554f507cbde201222cc08b70 100644 (file)
@@ -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
index cda3c1f6c608ca836db3b7ca22a49a18966aa9aa..a964980e8928946313265086b3612977abfb636e 100644 (file)
@@ -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