summaryrefslogtreecommitdiff
path: root/fbin/monkey.py
blob: 89df4f3f1f5f665b0d0253a2e17afc874c0e1fb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import tempfile

from flask import current_app
import werkzeug.formparser
import werkzeug.wrappers


def werkzeug_patch():
    global werkzeug_orig_stream_factory

    werkzeug_orig_stream_factory = werkzeug.formparser.default_stream_factory

    def custom_stream_factory(total_content_length, filename, content_type, content_length=None):
        if total_content_length > 1024 * 500:
            return tempfile.NamedTemporaryFile('wb+', prefix='upload_',
                    dir=current_app.config['FILE_DIRECTORY'], delete=True)
        return werkzeug_orig_stream_factory(total_content_length, filename, content_type, content_length)

    werkzeug.formparser.default_stream_factory = custom_stream_factory
    werkzeug.wrappers.default_stream_factory = custom_stream_factory


def werkzeug_reset():
    werkzeug.formparser.default_stream_factory = werkzeug_orig_stream_factory
    werkzeug.wrappers.default_stream_factory = werkzeug_orig_stream_factory


def patch():
    werkzeug_patch()