taggr.cgi
changeset 8 4e71e1b670bc
child 12 c2d8e9a754a1
equal deleted inserted replaced
7:235ae238f694 8:4e71e1b670bc
       
     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