- diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
- index bf825a2..a2b5b72 100644
- --- a/mediagoblin/db/models.py
- +++ b/mediagoblin/db/models.py
- @@ -24,6 +24,7 @@ from mediagoblin import mg_globals
- from mediagoblin.db import migrations
- from mediagoblin.db.util import DESCENDING, ObjectId
- from mediagoblin.util import Pagination
- +from mediagoblin.util import IMAGE_FETCHING_ORDER
- ###################
- # Custom validators
- @@ -109,6 +110,24 @@ class MediaEntry(Document):
- migration_handler = migrations.MediaEntryMigration
- + def get_display_media(self, media_map, fetch_order=IMAGE_FETCHING_ORDER):
- + """
- + Find the best media for display.
- +
- + Args:
- + - media_map: a dict like
- + {u'image_size': [u'dir1', u'dir2', u'image.jpg']}
- + - fetch_order: the order we should try fetching images in
- +
- + Returns:
- + (media_size, media_path)
- + """
- + media_sizes = media_map.keys()
- + print media_sizes
- + for media_size in IMAGE_FETCHING_ORDER:
- + if media_size in media_sizes:
- + return media_map[media_size]
- +
- def main_mediafile(self):
- pass
- diff --git a/mediagoblin/process_media/__init__.py b/mediagoblin/process_media/__init__.py
- index 0d1abcb..9b8171c 100644
- --- a/mediagoblin/process_media/__init__.py
- +++ b/mediagoblin/process_media/__init__.py
- @@ -57,19 +57,25 @@ def process_media_initial(media_id):
- thumb.save(thumb_file, "JPEG")
- """
- - Create medium file, used in `media.html`
- + If the size of the original file exceeds the specified size of a `medium`
- + file, a `medium.jpg` files is created and later associated with the media
- + entry.
- """
- medium = Image.open(queued_filename)
- - medium.thumbnail(MEDIUM_SIZE, Image.ANTIALIAS)
- + medium_processed = False
- - if medium.mode != "RGB":
- - medium = medium.convert("RGB")
- + if medium.size[0] > MEDIUM_SIZE[0] or medium.size[1] > MEDIUM_SIZE[1]:
- + medium.thumbnail(MEDIUM_SIZE, Image.ANTIALIAS)
- - medium_filepath = create_pub_filepath(entry, 'medium.jpg')
- + if medium.mode != "RGB":
- + medium = medium.convert("RGB")
- - medium_file = mgg.public_store.get_file(medium_filepath, 'w')
- - with medium_file:
- - medium.save(medium_file, "JPEG")
- + medium_filepath = create_pub_filepath(entry, 'medium.jpg')
- +
- + medium_file = mgg.public_store.get_file(medium_filepath, 'w')
- + with medium_file:
- + medium.save(medium_file, "JPEG")
- + medium_processed = True
- # we have to re-read because unlike PIL, not everything reads
- # things in string representation :)
- @@ -86,7 +92,8 @@ def process_media_initial(media_id):
- media_files_dict = entry.setdefault('media_files', {})
- media_files_dict['thumb'] = thumb_filepath
- media_files_dict['main'] = main_filepath
- - media_files_dict['medium'] = medium_filepath
- + if medium_processed:
- + media_files_dict['medium'] = medium_filepath
- entry['state'] = u'processed'
- entry.save()
- diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html
- index e16f1e0..56d7966 100644
- --- a/mediagoblin/templates/mediagoblin/user_pages/media.html
- +++ b/mediagoblin/templates/mediagoblin/user_pages/media.html
- @@ -26,13 +26,8 @@
- <h1>
- {{media.title}}
- </h1>
- - {% if media.media_files.medium %}
- - <img class="media_image" src="{{ request.app.public_store.file_url(
- - media.media_files.medium) }}" />
- - {% else %}
- - <img class="media_image" src="{{ request.app.public_store.file_url(
- - media.media_files.main) }}" />
- - {% endif %}
- + <img class="media_image" src="{{ request.app.public_store.file_url(
- + media.get_display_media(media.media_files)) }}" />
- <p>
- Uploaded on
- {{ "%4d-%02d-%02d"|format(media.created.year,
- diff --git a/mediagoblin/util.py b/mediagoblin/util.py
- index a20e87c..2698fb6 100644
- --- a/mediagoblin/util.py
- +++ b/mediagoblin/util.py
- @@ -35,6 +35,8 @@ from mediagoblin import mg_globals
- from mediagoblin import messages
- from mediagoblin.db.util import ObjectId
- +IMAGE_FETCHING_ORDER = [u'medium', u'main', u'thumb']
- +
- TESTS_ENABLED = False
- def _activate_testing():
- """