def test_save_namedext(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='boat.jpg') res = uset.save(tfs, name='photo_123.') assert res == 'photo_123.jpg' assert tfs.saved == '/uploads/photo_123.jpg'
def test_save_named(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo.txt') res = uset.save(tfs, name='file_123.txt') assert res == 'file_123.txt' assert tfs.saved == '/uploads/file_123.txt'
def test_implicit_folder(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='boat.jpg') res = uset.save(tfs, name='someguy/photo_123.') assert res == 'someguy/photo_123.jpg' assert tfs.saved == '/uploads/someguy/photo_123.jpg'
def test_conflict(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo.txt') self.extant('/uploads/foo.txt') res = uset.save(tfs) assert res == 'foo_1.txt'
def _configuploadset(name, constraint): uset = UploadSet(name, constraint) uset._config = UploadConfiguration( conf.UPLOADS_DEFAULT_DEST, conf.UPLOADED_FILES_URL, ) return uset
def test_save_folders(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo.txt') res = uset.save(tfs, folder='someguy') assert res == 'someguy/foo.txt' assert tfs.saved == '/uploads/someguy/foo.txt'
def test_conflict_without_extension(self): # Test case for issue #7. uset = UploadSet('files', extensions=('')) uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo') self.extant('/uploads/foo') res = uset.save(tfs) assert res == 'foo_1'
def test_multi_conflict(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo.txt') self.extant('/uploads/foo.txt', *('/uploads/foo_%d.txt' % n for n in range(1, 6))) res = uset.save(tfs) assert res == 'foo_6.txt'
def test_filenames(self): uset = UploadSet('files') uset._config = Config('/uploads') namepairs = (('foo.txt', True), ('boat.jpg', True), ('warez.exe', False)) for name, result in namepairs: tfs = TestingFileStorage(filename=name) assert uset.file_allowed(tfs, name) is result
def test_path(self): uset = UploadSet('files') uset._config = Config('/uploads') assert uset.path('foo.txt') == '/uploads/foo.txt' assert uset.path('someguy/foo.txt') == '/uploads/someguy/foo.txt' assert (uset.path('foo.txt', folder='someguy') == '/uploads/someguy/foo.txt') assert (uset.path('foo/bar.txt', folder='someguy') == '/uploads/someguy/foo/bar.txt')
def test_secured_filename(self): uset = UploadSet('files', ALL) uset._config = Config('/uploads') tfs1 = TestingFileStorage(filename='/etc/passwd') tfs2 = TestingFileStorage(filename='../../myapp.wsgi') res1 = uset.save(tfs1) assert res1 == 'etc_passwd' assert tfs1.saved == '/uploads/etc_passwd' res2 = uset.save(tfs2) assert res2 == 'myapp.wsgi' assert tfs2.saved == '/uploads/myapp.wsgi'
def test_filenames(self): uset = UploadSet('files') uset._config = Config('/uploads') namepairs = ( ('foo.txt', True), ('boat.jpg', True), ('warez.exe', False) ) for name, result in namepairs: tfs = TestingFileStorage(filename=name) assert uset.file_allowed(tfs, name) is result
from flask.ext.pymongo import PyMongo import json import os import zipfile import ogr2ogr app = create_app() UPLOAD_DEST = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'static/data') uploaded_files = UploadSet('tracks', ARCHIVES, default_dest=lambda app: app.instance_path) configure_uploads(app, uploaded_files) uploaded_files._config = UploadConfiguration(UPLOAD_DEST) configure_uploads(app, uploaded_files) mongo = PyMongo(app) @app.route('/') def index(): return render_template('index.html', tracks=get_all_tracks()) @app.route('/upload', methods=['POST', 'GET']) def upload(): if request.method == "POST": filename = uploaded_files.save(request.files.get('track')) extract_file(filename)
import subprocess import json import os import zipfile from functools import wraps app = create_app() UPLOAD_DEST = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'static/data') uploaded_files = UploadSet('tracks', ARCHIVES, default_dest=lambda app: app.instance_path) configure_uploads(app, uploaded_files) uploaded_files._config = UploadConfiguration(UPLOAD_DEST) configure_uploads(app, uploaded_files) mongo = PyMongo(app) def check_auth(username, password): """This function is called to check if a username / password combination is valid. """ users = app.config.get('USERS') passkey = app.config.get('SECRET')[0] if username in users and passkey == password: return username
def test_default_extensions(self): uset = UploadSet('files') uset._config = Config('/uploads') extpairs = (('txt', True), ('jpg', True), ('exe', False)) for ext, result in extpairs: assert uset.extension_allowed(ext) is result
render_template, redirect, url_for, send_from_directory, flash, abort) from flask.ext.pymongo import PyMongo from flaskext.uploads import (UploadSet, configure_uploads, IMAGES, DATA, DOCUMENTS, UploadConfiguration) from logging import FileHandler from werkzeug import secure_filename from utilities import ObjectIdCleaner app = Flask(__name__) app.config.from_pyfile('conf.py') mongo = PyMongo(app) plugin_upload = UploadSet('plugins', ('js', 'css'), default_dest=lambda app: app.instance_path) plugin_upload._config = UploadConfiguration(app.config.get( 'PLUGIN_UPLOAD_FOLDER')) files_upload = UploadSet('files', IMAGES + DOCUMENTS + DATA + ('pdf',), default_dest=lambda app: app.instance_path) files_upload._config = UploadConfiguration(app.config.get( 'FILE_UPLOAD_FOLDER')) configure_uploads(app, plugin_upload) configure_uploads(app, files_upload) app.register_module(cache.cache, url_prefix='/cache') bson.ObjId = bson.objectid.ObjectId # handy reference to otherwise long name