--- a/de-cgi-bin/series.py Wed Jun 03 18:59:46 2009 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-#!/usr/bin/env python2.4
-#
-# DeGAL - A pretty simple web image gallery
-# Copyright (C) 2007 Tero Marttila
-# http://marttila.de/~terom/degal/
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the
-# Free Software Foundation, Inc.,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-
-import os
-import cgi
-import Cookie
-
-import inc
-from lib import shorturl, template, utils, settings
-
-#
-# load request params
-#
-vars = cgi.FieldStorage()
-
-# these are interpeted different ways, hence the generic naming
-arg1 = vars["keys"].value
-if 'index' in vars :
- arg2 = vars["index"].value
-else :
- arg2 = None
-
-# the cookie with the user's current series
-cookie = Cookie.SimpleCookie(os.environ.get('HTTP_COOKIE', None))
-
-# a special action?
-if arg1 and arg1 in ('add', 'del', 'clear', 'view') or arg2 == 'load' :
- # load the keys from the cookie
- if 'series' in cookie :
- keys = cookie["series"].value.split()
- else :
- keys = []
-
- if arg2 == 'load' :
- # set the keys in the user's cookie to those in the URL
- keys = arg1.split()
-
- elif arg1 == 'add' and arg2 not in keys :
- # add a code to the list of keys
- keys.append(arg2)
-
- elif arg1 == 'del' and arg2 in keys :
- # remove a key from the list of keys
- keys.remove(arg2)
-
- elif arg1 == 'clear' :
- # clear out the set of keys
- keys = []
-
- elif arg1 == 'view' :
- # just view them
- pass
-
- # set the series cookie value
- cookie['series'] = ' '.join(keys)
- cookie['series']['path'] = '/'
-
- # if we have keys, redirect to them, otherwise, back to index we go
- if keys :
- redirect_to = "../%s/" % ('+'.join(keys))
- else :
- redirect_to = "../.."
-
- # do the redirect
- print "Status: 302"
- print "Location: %s" % redirect_to
- print cookie
- print
- print "Redirect..."
-else :
- # we're just viewing
- keys = arg1.split()
-
- # is this "My Series"?
- my_series = 'series' in cookie and cookie['series'].value.split() == keys
-
- index = fname = None
-
- if arg2 :
- try :
- index = int(arg2)
- except ValueError :
- fname = arg2
-
- # our custom Series/Image classes, because they do act slightly differently
-
- class Series (object) :
- def __init__ (self, keys) :
- self.images = []
- prev = None
-
- self.image_dict = dict()
-
- images = shorturl.get_images(keys)
-
- for index, (key, (dir, fname)) in enumerate(zip(keys, images)) :
- img = Image(self, key, dir, fname, index)
- self.images.append(img)
- self.image_dict[fname] = img
-
- img.prev = prev
-
- if prev :
- prev.next = img
-
- prev = img
-
- def render (self) :
- if my_series :
- descr = '<a href="../clear/" rel="nofollow">Clear your series</a>'
- else :
- descr = '<a href="load" rel="nofollow">Load as your series</a>'
-
- return template.gallery.render(
- stylesheet_url = utils.url("style.css", up=2),
-
- breadcrumb = [(utils.url(up=1), "Index"), (utils.url(), "Series")],
-
- dirs = None,
- title = "Series",
-
- num_pages = 1,
- cur_page = 0,
-
- images = self.images,
-
- description = descr,
-
- shorturl = None,
- shorturl_code = None,
- )
-
- class Image (object) :
- def __init__ (self, series, key, dir, fname, index) :
- self.fname = fname
- self.name = utils.url_join(dir, fname, abs=True)
- self.html_name = utils.url(fname)
- self.real_html_name = utils.url_join(dir, fname + ".html", abs=True)
-
- self.thumb_name = utils.url_join(dir, settings.THUMB_DIR, fname, abs=True)
- self.preview_name = utils.url_join(dir, settings.PREVIEW_DIR, fname, abs=True)
-
- self.shorturl = key
-
- self.prev = self.next = None
-
- def render (self) :
- descr = '<span style="font-size: x-small"><a href="%s.html">Standalone image</a></span>' % self.real_html_name
-
- if my_series :
- series_url = utils.url_join("del", self.shorturl, up=1)
- series_verb = "Remove from"
- else :
- series_url = series_verb = ""
-
- return template.image.render(
- stylesheet_url = utils.url("style.css", up=3),
-
- breadcrumb = [(utils.url(up=2), "Index"), (utils.url("."), "Series"), (self.html_name, self.fname)],
-
- title = self.fname,
-
- prev = self.prev,
- img = self,
- next = self.next,
-
- description = descr,
-
- img_size = None,
- file_size = None,
- timestamp = None,
-
- shorturl = utils.url_join("s", self.shorturl, abs=True),
- shorturl_code = self.shorturl,
-
- series_url = series_url,
- series_verb = series_verb,
- )
-
- series = Series(keys)
-
- if fname :
- html = series.image_dict[fname].render()
- elif index :
- html = series.images[index - 1].render()
- else :
- html = series.render()
-
- print "Content-Type: text/html"
- print
- print html
-