Simplify/Robustify the thumbnail URL usage in templates

So far templates required a very complex blurb to simply insert a
thumbnail URL, exposing much of the internal logic to the template
designer. In addition, we would fail with an error if for some
reason the media_files['thumb'] entry was never populated.

This adds the MediaEntry.thumb_url property that template designers
can simply use. It will do the right thing, either fetching the proper
thumbnail or hand back a generic icon specified in a media's
MEDIA_MANAGER as "default_thumb".

Add an image default fallback icon (stolen from Tangos, which are
Public Domain since version 0.8.90 as I understand) since the one
we referred to was not existing. Perhaps, a "broken image" icon
would be better, but I'll leave that to our capable designers.

All templates have been modified to make use of the new thumb_url
function.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
Sebastian Spaeth
2012-11-09 10:13:04 +01:00
parent ee62c51d79
commit 2e4ad35962
10 changed files with 37 additions and 25 deletions

View File

@@ -27,6 +27,8 @@ These functions now live here and get "mixed in" into the
real objects.
"""
import importlib
from mediagoblin import mg_globals
from mediagoblin.auth import lib as auth_lib
from mediagoblin.tools import common, licenses
@@ -112,6 +114,23 @@ class MediaEntryMixin(object):
media=self.slug_or_id,
**extra_args)
@property
def thumb_url(self):
"""Return the thumbnail URL (for usage in templates)
Will return either the real thumbnail or a default fallback icon."""
# TODO: implement generic fallback in case MEDIA_MANAGER does
# not specify one?
if u'thumb' in self.media_files:
thumb_url = mg_globals.app.public_store.file_url(
self.media_files[u'thumb'])
else:
# no thumbnail in media available. Get the media's
# MEDIA_MANAGER for the fallback icon and return static URL
manager = importlib.import_module(self.media_type)
thumb_url = manager.MEDIA_MANAGER[u'default_thumb']
thumb_url = mg_globals.app.staticdirector(thumb_url) # use static
return thumb_url
def get_fail_exception(self):
"""
Get the exception that's appropriate for this error