[Toaster] [review-request][PATCH] toaster: Use Python's mimetypes module

Brian Avery avery.brian at gmail.com
Tue Oct 6 20:05:13 PDT 2015


pushed to bitbake and to toaster-next.
-b

On Mon, Sep 28, 2015 at 2:02 AM, Ed Bartosh <ed.bartosh at linux.intel.com> wrote:
> 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
> --
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster


More information about the toaster mailing list