annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
1 import mimetypes
5
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
2 from decoupage.formatters import FormatterBase
0
b7348ffe5b46 initial import of montage
k0s <k0scist@gmail.com>
parents:
diff changeset
3
5
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
4 class Images(FormatterBase):
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
5 """display images with thumbnails"""
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
6
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
7 defaults = { 'size': 'x',
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
8 'columns': None }
0
b7348ffe5b46 initial import of montage
k0s <k0scist@gmail.com>
parents:
diff changeset
9
b7348ffe5b46 initial import of montage
k0s <k0scist@gmail.com>
parents:
diff changeset
10 def __init__(self, arg):
5
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
11 FormatterBase.__init__(self, arg)
0
b7348ffe5b46 initial import of montage
k0s <k0scist@gmail.com>
parents:
diff changeset
12
5
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
13 # get image size for display
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
14 width, height = [ i.strip() for i in self.size.split('x', 1) ]
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
15 self.width = width or None
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
16 self.height = height or None
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
17
0
b7348ffe5b46 initial import of montage
k0s <k0scist@gmail.com>
parents:
diff changeset
18 def __call__(self, request, data):
5
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
19
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
20 # add width + height data
2
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
21 data['width'] = self.width
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
22 data['height'] = self.height
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
23
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
24 # filter out non-images
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
25 _files = []
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
26 for f in data['files']:
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
27 mimetype = mimetypes.guess_type(f['name'])[0]
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
28 if mimetype and mimetype.split('/')[0] == 'image':
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
29 _files.append(f)
5
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
30 f['link'] = f['path']
2
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
31 data['files'] = _files
5
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
32
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
33 # columns for grid display
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
34 if self.columns is None:
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
35 data['columns'] = len(data['files'])
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
36 else:
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
37 data['columns'] = int(self.columns)
2
4b8aa9b0a45b montage actually does something now
k0s <k0scist@gmail.com>
parents: 0
diff changeset
38
5
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
39 # thumbnails
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
40 if 'thumbnails' not in self.args:
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
41 return
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
42 for f in data['files']:
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
43 raise NotImplementedError
d60a5ffbf4f4 * include a new template to display images in a grid
k0s <k0scist@gmail.com>
parents: 2
diff changeset
44 import pdb; pdb.set_trace()