From 2e4ad359623916f5ca9f6ec11f5353a1a85a77d2 Mon Sep 17 00:00:00 2001 From: Sebastian Spaeth Date: Fri, 9 Nov 2012 10:13:04 +0100 Subject: [PATCH] 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 --- mediagoblin/db/mixin.py | 19 ++++++++++++++++++ mediagoblin/media_types/image/__init__.py | 2 +- .../static/images/media_thumbs/image.png | Bin 0 -> 30341 bytes .../mediagoblin/edit/attachments.html | 3 +-- .../templates/mediagoblin/edit/edit.html | 5 ++--- .../collection_item_confirm_remove.html | 9 ++++----- .../mediagoblin/user_pages/media_collect.html | 7 +++---- .../user_pages/media_confirm_delete.html | 9 ++++----- .../mediagoblin/utils/collection_gallery.html | 5 ++--- .../mediagoblin/utils/object_gallery.html | 3 +-- 10 files changed, 37 insertions(+), 25 deletions(-) create mode 100644 mediagoblin/static/images/media_thumbs/image.png diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py index f6a15a12..22375b7f 100644 --- a/mediagoblin/db/mixin.py +++ b/mediagoblin/db/mixin.py @@ -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 diff --git a/mediagoblin/media_types/image/__init__.py b/mediagoblin/media_types/image/__init__.py index d4720fab..36d7c201 100644 --- a/mediagoblin/media_types/image/__init__.py +++ b/mediagoblin/media_types/image/__init__.py @@ -24,5 +24,5 @@ MEDIA_MANAGER = { # 'mediagoblin.media_types.image.processing'? "sniff_handler": sniff_handler, "display_template": "mediagoblin/media_displays/image.html", - "default_thumb": "images/media_thumbs/image.jpg", + "default_thumb": "images/media_thumbs/image.png", "accepted_extensions": ["jpg", "jpeg", "png", "gif", "tiff"]} diff --git a/mediagoblin/static/images/media_thumbs/image.png b/mediagoblin/static/images/media_thumbs/image.png new file mode 100644 index 0000000000000000000000000000000000000000..8437a2983cae492da091c27a3afca1b65bfa858d GIT binary patch literal 30341 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
- +
{% if media.attachment_files|count %} diff --git a/mediagoblin/templates/mediagoblin/edit/edit.html b/mediagoblin/templates/mediagoblin/edit/edit.html index 3e305ae0..144184df 100644 --- a/mediagoblin/templates/mediagoblin/edit/edit.html +++ b/mediagoblin/templates/mediagoblin/edit/edit.html @@ -34,8 +34,7 @@

{% trans media_title=media.title %}Editing {{ media_title }}{% endtrans %}

- +
{{ wtforms_util.render_divs(form) }}
@@ -46,4 +45,4 @@
-{% endblock %} +{% endblock %} diff --git a/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html b/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html index f56ab5ab..9be10321 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html +++ b/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html @@ -33,14 +33,13 @@ Really remove {{ media_title }} from {{ collection_title }}? {%- endtrans %} - +
- +
- +
- +

{{ form.confirm }} diff --git a/mediagoblin/templates/mediagoblin/user_pages/media_collect.html b/mediagoblin/templates/mediagoblin/user_pages/media_collect.html index a56c9cd3..cefe638b 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/media_collect.html +++ b/mediagoblin/templates/mediagoblin/user_pages/media_collect.html @@ -36,12 +36,11 @@ Add {{ title }} to collection {%- endtrans %} - +

- +
- +

diff --git a/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html index a3459206..a3cf0210 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html +++ b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html @@ -31,14 +31,13 @@ Really delete {{ title }}? {%- endtrans %} - +

- +
- +
- +

{{ form.confirm }} diff --git a/mediagoblin/templates/mediagoblin/utils/collection_gallery.html b/mediagoblin/templates/mediagoblin/utils/collection_gallery.html index a8742c74..5f8ffea1 100644 --- a/mediagoblin/templates/mediagoblin/utils/collection_gallery.html +++ b/mediagoblin/templates/mediagoblin/utils/collection_gallery.html @@ -31,10 +31,9 @@ {%- if loop.first %} thumb_entry_first {%- elif loop.last %} thumb_entry_last{% endif %}"> - + - + {% if item.note %} {%- trans note=item.note -%}
diff --git a/mediagoblin/templates/mediagoblin/utils/object_gallery.html b/mediagoblin/templates/mediagoblin/utils/object_gallery.html index bfd19ee6..b4da5bc1 100644 --- a/mediagoblin/templates/mediagoblin/utils/object_gallery.html +++ b/mediagoblin/templates/mediagoblin/utils/object_gallery.html @@ -30,8 +30,7 @@ {%- if loop.first %} thumb_entry_first {%- elif loop.last %} thumb_entry_last{% endif %}"> - + {% if entry.title %} {{ entry.title }} -- 2.25.1