|
1 #!/usr/bin/env python2.4 |
|
2 |
|
3 import cgi |
|
4 import shelve |
|
5 import os, os.path |
|
6 |
|
7 import degal |
|
8 |
|
9 images = shelve.open('images', 'c') |
|
10 tag_images = shelve.open('tag_images', 'c') |
|
11 tag_tags = shelve.open('tag_tags', 'c') |
|
12 |
|
13 # request params |
|
14 vars = cgi.FieldStorage() |
|
15 |
|
16 if 'path' in vars : |
|
17 path = vars['path'].value |
|
18 else : |
|
19 path = '.' |
|
20 |
|
21 image_list = [] |
|
22 |
|
23 if 'bulk_tag' in vars : |
|
24 bulk_tags = vars['bulk_tag'].value.split() |
|
25 else : |
|
26 bulk_tags = None |
|
27 |
|
28 for fname in os.listdir(path) : |
|
29 if degal.isImage(fname) : |
|
30 image_path = os.path.join(path, fname) |
|
31 thumb_path = os.path.join(path, degal.THUMB_DIR, fname) |
|
32 html_path = image_path + '.html' |
|
33 |
|
34 title, descr, tags = images.get(image_path, (None, None, [])) |
|
35 |
|
36 if 'img_%s_title' % fname in vars : |
|
37 title = vars['img_%s_title' % fname].value |
|
38 |
|
39 if 'img_%s_descr' % fname in vars : |
|
40 descr = vars['img_%s_descr' % fname].value |
|
41 |
|
42 if 'img_%s_tags' % fname in vars : |
|
43 tags = vars['img_%s_tags' % fname].value.split() |
|
44 |
|
45 if bulk_tags and 'img_%s_chk' % fname in vars : |
|
46 tags.extend(bulk_tags) |
|
47 |
|
48 if title or descr or tags : |
|
49 images[image_path] = (title, descr, tags) |
|
50 |
|
51 html = """ |
|
52 <li> |
|
53 <span class="inputs"> |
|
54 <label for="img_%(fname)s_title">Title</label> <input type="text" name="img_%(fname)s_title" size="60" value="%(title)s" /> <br/> |
|
55 <label for="img_%(fname)s_descr">Description</label> <input type="text" name="img_%(fname)s_descr" size="60" value="%(descr)s" /> <br/> |
|
56 <label for="img_%(fname)s_tags">Tags</label> <input type="text" name="img_%(fname)s_tags" size="60" value="%(tags)s" /> <br/> |
|
57 </span> |
|
58 |
|
59 <input type="checkbox" name="img_%(fname)s_chk" class="chk" /> |
|
60 |
|
61 <span class="thumb"><a href="%(html_path)s"><img src="%(thumb_path)s" /></a></span> |
|
62 </li> |
|
63 """ % dict( |
|
64 html_path = html_path, |
|
65 thumb_path = thumb_path, |
|
66 fname = fname, |
|
67 title = title and title or '', |
|
68 descr = descr and descr or '', |
|
69 tags = tags and ' '.join(tags) or '', |
|
70 ) |
|
71 |
|
72 image_list.append((fname, html)) |
|
73 |
|
74 image_list.sort() |
|
75 |
|
76 print "Content-Type: text/html" |
|
77 print |
|
78 print degal.Template('taggr').render( |
|
79 TITLE = "Taggr - %s" % path, |
|
80 BREADCRUMB = "TODO", |
|
81 CONTENT = "<ul>" + ''.join([h for fname, h in image_list]) + "</ul>", |
|
82 PATH = path, |
|
83 ) |
|
84 |