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