[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