def get_image_response(document_root=None, cache_directory=None, size=(500, 500), factor=100, path=None, accel_header=None): """helper the get an image response""" # FIXME cache_directory can't be None dummy, ext = os.path.splitext(path) # make sure we got an image if ext.lower() not in ('.png', '.jpg', '.jpeg', '.gif'): return HTTPNotFound() if PY3: filename = os.path.join(document_root, path) else: filename = os.path.join(document_root, path.encode('utf-8')) if not os.path.isfile(filename): return HTTPNotFound() if size is None: # get original return get_file_response(filename, accel_header=accel_header, document_root=document_root) factor = int(factor) # generate cached direname h = u'%s-%s-%s' % (path, size, factor) if PY3 or isinstance(h, unicode): h = h.encode('utf8') h = md5(h).hexdigest() d1, d2, d3 = h[0:3], h[3:6], h[6:9] cached = os.path.join(cache_directory, d1, d2, d3) if not os.path.isdir(cached): try: os.makedirs(cached) except OSError: # dir exist...?! pass cached = os.path.join(cached, os.path.basename(filename)) if os.path.isfile(cached): last_modified = os.stat(filename)[stat.ST_MTIME] last_cached = os.stat(cached)[stat.ST_MTIME] if last_modified > last_cached: os.remove(cached) # generate cached thumb if not yet done if not os.path.isfile(cached): resize(filename, cached, size, factor=factor) return get_file_response(cached, document_root=cache_directory, accel_header=accel_header)
def get_image_response(document_root=None, cache_directory=None, size=(500, 500), path=None, accel_header=None,system_cb=None): """helper the get an image response""" #FIXME cache_directory can't be None dummy, ext = os.path.splitext(path) # make sure we got an image if ext.lower() not in ('.png', '.jpg', '.jpeg', '.gif'): return HTTPNotFound() filename = os.path.join(document_root, path.encode('utf-8')) if not os.path.isfile(filename): return HTTPNotFound() if size is None: # get original return get_file_response(filename, accel_header=accel_header, document_root=document_root) # generate cached direname h = md5('%s-%s' % (path.encode('utf-8'), size)).hexdigest() d1, d2, d3 = h[0:3], h[3:6], h[6:9] cached = os.path.join(cache_directory, d1, d2, d3) if not os.path.isdir(cached): os.makedirs(cached) cached = os.path.join(cached, os.path.basename(filename)) if os.path.isfile(cached): last_modified = os.stat(filename)[stat.ST_MTIME] last_cached = os.stat(cached)[stat.ST_MTIME] if last_modified > last_cached: os.remove(cached) # generate cached thumb if not yet done if not os.path.isfile(cached): resize(filename, cached, size) if system_cb: cb=system_cb cb=cb.replace('{file}',cached) cb=cb.replace('{url}',urllib.quote(cached)) cb=cb.replace('{dir}',os.path.dirname(cached)) os.system(cb) return get_file_response(cached, document_root=cache_directory, accel_header=accel_header)
def view(request): path = request.matchdict['path'] path = '/'.join(path) filename = os.path.join(document_root, path) return get_file_response(filename, document_root=document_root, accel_header=accel_header)
def application(environ, start_response): path_info = environ['PATH_INFO'].strip('/') filename = os.path.join(document_root, path_info) return get_file_response(filename=filename, document_root=document_root, accel_header=accel_header)(environ, start_response)
def application(environ, start_response): path_info = environ['PATH_INFO'].strip('/') filename = os.path.join(document_root, path_info) return get_file_response( filename=filename, document_root=document_root, accel_header=accel_header )(environ, start_response)
def view(request): path = request.matchdict['path'] path = '/'.join(path) filename = os.path.join(document_root, path) return get_file_response( filename, document_root=document_root, accel_header=accel_header )