[Toaster] [review-request][PATCH] toaster: Use Python's mimetypes module
Ed Bartosh
ed.bartosh at linux.intel.com
Mon Sep 28 02:02:21 PDT 2015
Hi Elliot,
Patch looks good to me, thanks.
Acked-by: Ed Bartosh <ed.bartosh at linux.intel.com>
On Thu, Sep 24, 2015 at 01:34:24PM +0100, Elliot Smith wrote:
> 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 at intel.com>
> ---
> 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 8689a12..0a2a959 100755
> --- a/bitbake/lib/toaster/toastergui/views.py
> +++ b/bitbake/lib/toaster/toastergui/views.py
> @@ -46,19 +46,26 @@ from toastergui.templatetags.projecttags import json as jsonfilter
> import json
> from os.path import dirname
> 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 c4a2221..1d7d21b 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
> --
> Elliot Smith
> Software Engineer
> Intel OTC
>
> ---------------------------------------------------------------------
> Intel Corporation (UK) Limited
> Registered No. 1134945 (England)
> Registered Office: Pipers Way, Swindon SN3 1RJ
> VAT No: 860 2173 47
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
> --
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
--
--
Regards,
Ed
More information about the toaster
mailing list