aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliot Smith <elliot.smith@intel.com>2015-10-06 20:05:21 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-10-11 05:27:52 +0100
commit0dd0ac25d54c73f13812db04826b57b3d16ea43f (patch)
treeca3fa0e50e6562673e68973a341302cfe1c6895d
parent9a825eb928cb35096d2c1563788310fb6a13e93e (diff)
downloadbitbake-0dd0ac25d54c73f13812db04826b57b3d16ea43f.tar.gz
toaster: Use Python's mimetypes module
filemagic is used to guess the mimetype of files when a user requests a download. However, this adds a dependency on an external library. Python does have a mimetypes module, though this guesses the mimetype rather than doing anything clever with the actual file content. But for our purposes, it's more than adequate. (NB Django also uses this module when serving static files.) Use this instead of relying on any external code, and remove the filemagic dependency. Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: brian avery <avery.brian@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xlib/toaster/toastergui/views.py15
-rw-r--r--toaster-requirements.txt1
2 files changed, 11 insertions, 5 deletions
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index db791cfd8..6e5815595 100755
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -47,19 +47,26 @@ import json
from os.path import dirname
from functools import wraps
import itertools
+import mimetypes
-import magic
import logging
logger = logging.getLogger("toaster")
class MimeTypeFinder(object):
- _magic = magic.Magic(flags = magic.MAGIC_MIME_TYPE)
+ # setting this to False enables additional non-standard mimetypes
+ # to be included in the guess
+ _strict = False
- # returns the mimetype for a file path
+ # returns the mimetype for a file path as a string,
+ # or 'application/octet-stream' if the type couldn't be guessed
@classmethod
def get_mimetype(self, path):
- return self._magic.id_filename(path)
+ guess = mimetypes.guess_type(path, self._strict)
+ guessed_type = guess[0]
+ if guessed_type == None:
+ guessed_type = 'application/octet-stream'
+ return guessed_type
# all new sessions should come through the landing page;
# determine in which mode we are running in, and redirect appropriately
diff --git a/toaster-requirements.txt b/toaster-requirements.txt
index c4a222155..1d7d21b33 100644
--- a/toaster-requirements.txt
+++ b/toaster-requirements.txt
@@ -2,5 +2,4 @@ Django==1.6
South==0.8.4
argparse==1.2.1
wsgiref==0.1.2
-filemagic==1.6
beautifulsoup4>=4.4.0