From ce9011a9dea4d4f8040170c28031cfbcadfbfd81 Mon Sep 17 00:00:00 2001 From: Elliot Smith Date: Tue, 6 Oct 2015 20:05:21 -0700 Subject: bitbake: 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. (Bitbake rev: 0dd0ac25d54c73f13812db04826b57b3d16ea43f) Signed-off-by: Elliot Smith Signed-off-by: brian avery Signed-off-by: Richard Purdie --- bitbake/lib/toaster/toastergui/views.py | 15 +++++++++++---- bitbake/toaster-requirements.txt | 1 - 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index db791cfd80..6e5815595f 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/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/bitbake/toaster-requirements.txt b/bitbake/toaster-requirements.txt index c4a2221553..1d7d21b331 100644 --- a/bitbake/toaster-requirements.txt +++ b/bitbake/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 -- cgit v1.2.3-54-g00ecf