Mercurial > personas_backend
changeset 145:f07025da528b
Thumbnails are now dynamically generated by a view function; if things get slow, we'll rely on a front-end cache like squid to speed it up.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Fri, 04 Apr 2008 10:41:50 -0700 |
parents | c718e2f5d0d2 |
children | 612212345759 |
files | personasbackend/personas/models.py personasbackend/personas/views.py |
diffstat | 2 files changed, 19 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/personasbackend/personas/models.py Fri Apr 04 07:54:48 2008 -0700 +++ b/personasbackend/personas/models.py Fri Apr 04 10:41:50 2008 -0700 @@ -66,8 +66,6 @@ LEGACY_FOOTER_URL = LEGACY_PREFIX + "%(name)s/stbar-%(name)s.jpg" LEGACY_HEADER_URL = LEGACY_PREFIX + "%(name)s/tbox-%(name)s.jpg" -NO_THUMBNAIL_IMAGE = "https://addons.mozilla.org/img/addon-icn.png" - THUMBNAIL_DIR = "thumbnails" def generate_thumbnail( header_file, footer_file ): @@ -323,7 +321,7 @@ return success - def create_thumbnail_and_get_url( self ): + def create_thumbnail( self ): from distutils.dir_util import mkpath abspath = self.thumbnail_filename @@ -333,12 +331,9 @@ mkpath( thumbnail_dir ) if ( (not os.path.exists( abspath )) and (not self.__make_thumbnail( abspath )) ): - return NO_THUMBNAIL_IMAGE + return False else: - return make_absolute_url( - "%s%s/%s" % (settings.MEDIA_URL, THUMBNAIL_DIR, - os.path.basename(abspath)) - ) + return True def __clear_thumbnail( self ): if os.path.exists( self.thumbnail_filename ):
--- a/personasbackend/personas/views.py Fri Apr 04 07:54:48 2008 -0700 +++ b/personasbackend/personas/views.py Fri Apr 04 10:41:50 2008 -0700 @@ -1,3 +1,6 @@ +import os +import mimetypes + from django.http import HttpResponseRedirect, HttpResponseForbidden from django.http import Http404 from django.http import HttpResponse, HttpResponseBadRequest @@ -9,6 +12,8 @@ from personasbackend.personas import models from personasbackend.personas import forms +NO_THUMBNAIL_IMAGE = "https://addons.mozilla.org/img/addon-icn.png" + def _render_static_persona( img_src, action ): if action == "footer": position = "bottom left" @@ -57,7 +62,17 @@ def thumbnail( request, persona_id ): persona = get_object_or_404( models.Persona, id=persona_id ) - return HttpResponseRedirect( persona.create_thumbnail_and_get_url() ) + if not persona.create_thumbnail(): + return HttpResponseRedirect( NO_THUMBNAIL_IMAGE ) + + filename = persona.thumbnail_filename + + mimetype = mimetypes.types_map[ os.path.splitext( filename )[1] ] + + image_data = open( filename, "rb" ).read() + + return HttpResponse( image_data, + mimetype = mimetype ) def list_view( request ): personas = models.Persona.objects.filter( status="published" )