view montage/formatters.py @ 5:d60a5ffbf4f4

* include a new template to display images in a grid * refactor Images formatter * stub for thumbnails
author k0s <k0scist@gmail.com>
date Fri, 25 Dec 2009 17:22:01 -0500
parents 4b8aa9b0a45b
children 93af41dcff3a
line wrap: on
line source

import mimetypes
from decoupage.formatters import FormatterBase

class Images(FormatterBase):
    """display images with thumbnails"""

    defaults = { 'size': 'x',
                 'columns': None }

    def __init__(self, arg):
        FormatterBase.__init__(self, arg)

        # get image size for display
        width, height = [ i.strip() for i in self.size.split('x', 1) ]
        self.width = width or None
        self.height = height or None
        
    def __call__(self, request, data):

        # add width + height data
        data['width'] = self.width
        data['height'] = self.height

        # filter out non-images
        _files = []
        for f in data['files']:
            mimetype = mimetypes.guess_type(f['name'])[0]
            if mimetype and mimetype.split('/')[0] == 'image':
                _files.append(f)
                f['link'] = f['path']
        data['files'] = _files
        
        # columns for grid display
        if self.columns is None:
            data['columns'] = len(data['files'])
        else:
            data['columns'] = int(self.columns)

        # thumbnails 
        if 'thumbnails' not in self.args:
            return
        for f in data['files']:
            raise NotImplementedError
            import pdb; pdb.set_trace()