29 lines
858 B
Python
29 lines
858 B
Python
"""HTTP adapters for files; business logic lives in services."""
|
|
|
|
from flask import Blueprint, abort, request, send_from_directory
|
|
|
|
from .. import file_service, visitor_service
|
|
from ..config import get_setting
|
|
|
|
bp = Blueprint('files', __name__)
|
|
|
|
@bp.route('/api/upload', methods=['POST'])
|
|
def upload_file():
|
|
return file_service.upload_file(request.files)
|
|
|
|
|
|
@bp.route('/uploads/<path:name>')
|
|
def uploaded_file(name):
|
|
if not visitor_service.owns_upload(name):
|
|
abort(404)
|
|
response = send_from_directory(get_setting('UPLOAD_DIR'), name)
|
|
response.headers['Cache-Control'] = 'private, no-store'
|
|
return response
|
|
|
|
|
|
@bp.route('/api/staff/uploads/<path:name>')
|
|
def staff_uploaded_file(name):
|
|
response = send_from_directory(get_setting('UPLOAD_DIR'), name)
|
|
response.headers['Cache-Control'] = 'private, no-store'
|
|
return response
|