42 lines
No EOL
1.3 KiB
Python
42 lines
No EOL
1.3 KiB
Python
# -*- Mode: Python; -*-
|
|
# -*- coding: utf-8 -*-
|
|
# vi:si:et:sw=2:sts=2:ts=2
|
|
|
|
from turbogears import controllers, expose, flash, redirect
|
|
from model import *
|
|
import cherrypy
|
|
|
|
# import logging
|
|
# log = logging.getLogger("oxdbarchive.controllers")
|
|
|
|
'''
|
|
/md5/frame/position.jpg
|
|
/md5/clip/position.jpg
|
|
/md5/metadata
|
|
'''
|
|
|
|
def httpExpires(sec):
|
|
exp_date = cherrypy.lib.httptools.HTTPDate(time.gmtime(time.mktime(time.gmtime()) + sec))
|
|
return exp_date
|
|
|
|
class Root(controllers.RootController):
|
|
@expose()
|
|
def default(self, md5Hash, action, position = None):
|
|
f = ArchiveFile.byMd5sum(md5Hash)
|
|
if action == 'metadata':
|
|
print f
|
|
return dict(meta = f)
|
|
elif action in ('timeline', 'timeline.png'):
|
|
cherrypy.response.headerMap['Content-Type'] = "image/jpeg"
|
|
cherrypy.response.headerMap["Expires"] = httpExpires(60*60*24*15)
|
|
return f.timeline()
|
|
elif position: #clip / frame
|
|
cherrypy.response.headerMap['Content-Type'] = "image/jpeg"
|
|
cherrypy.response.headerMap["Expires"] = httpExpires(60*60*24*15)
|
|
position = position.replace('.png', '').replace('.jpg', '')
|
|
position = position.replace('-', ':').replace('.',':')
|
|
if action == 'clip':
|
|
return f.clip(position)
|
|
elif action == 'frame':
|
|
return f.frame(position)
|
|
redirect('http://0xdb.oil21.org/') |