Save temporary files in STORAGE_DIR

This makes it trivial to save uploaded files to STORAGE_DIR, as the
temporary files Flask saves them in are already there.
This commit is contained in:
Sybren A. Stüvel 2016-05-03 11:22:54 +02:00
parent 0580d3fa65
commit 0389b05b14
2 changed files with 32 additions and 2 deletions

View File

@ -1,6 +1,6 @@
import logging import logging
import os import os
import json import tempfile
from bson import ObjectId from bson import ObjectId
from datetime import datetime from datetime import datetime
import bugsnag import bugsnag
@ -101,7 +101,14 @@ if from_envvar:
# configfile doesn't exist, it should error out (i.e. silent=False). # configfile doesn't exist, it should error out (i.e. silent=False).
app.config.from_pyfile(from_envvar, silent=False) app.config.from_pyfile(from_envvar, silent=False)
# Set the TMP # Set the TMP environment variable to manage where uploads are stored.
# These are all used by tempfile.mkstemp(), but we don't knwow in whic
# order. As such, we remove all used variables but the one we set.
tempfile.tempdir = app.config['STORAGE_DIR']
os.environ['TMP'] = app.config['STORAGE_DIR']
os.environ.pop('TEMP', None)
os.environ.pop('TMPDIR', None)
# Configure logging # Configure logging
logging.basicConfig( logging.basicConfig(

View File

@ -0,0 +1,23 @@
import os
import tempfile
from common_test_class import AbstractPillarTest
class TempDirTest(AbstractPillarTest):
def test_tempfiles_location(self):
# After importing the application, tempfiles should be created in the STORAGE_DIR
storage = self.app.config['STORAGE_DIR']
self.assertEqual(os.environ['TMP'], storage)
self.assertNotIn('TEMP', os.environ)
self.assertNotIn('TMPDIR', os.environ)
handle, filename = tempfile.mkstemp()
os.close(handle)
dirname = os.path.dirname(filename)
self.assertEqual(dirname, storage)
tmpfile = tempfile.NamedTemporaryFile()
dirname = os.path.dirname(tmpfile.name)
self.assertEqual(dirname, storage)