All of lore.kernel.org
 help / color / mirror / Atom feed
* [review-request][PATCH] toaster: Use Python's mimetypes module
@ 2015-09-24 12:34 Elliot Smith
  2015-09-28  9:02 ` Ed Bartosh
  0 siblings, 1 reply; 3+ messages in thread
From: Elliot Smith @ 2015-09-24 12:34 UTC (permalink / raw)
  To: toaster

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>
---
 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.



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [review-request][PATCH] toaster: Use Python's mimetypes module
  2015-09-24 12:34 [review-request][PATCH] toaster: Use Python's mimetypes module Elliot Smith
@ 2015-09-28  9:02 ` Ed Bartosh
  2015-10-07  3:05   ` Brian Avery
  0 siblings, 1 reply; 3+ messages in thread
From: Ed Bartosh @ 2015-09-28  9:02 UTC (permalink / raw)
  To: Elliot Smith; +Cc: toaster

Hi Elliot,

Patch looks good to me, thanks.

Acked-by: Ed Bartosh <ed.bartosh@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@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@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster

-- 
--
Regards,
Ed


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [review-request][PATCH] toaster: Use Python's mimetypes module
  2015-09-28  9:02 ` Ed Bartosh
@ 2015-10-07  3:05   ` Brian Avery
  0 siblings, 0 replies; 3+ messages in thread
From: Brian Avery @ 2015-10-07  3:05 UTC (permalink / raw)
  To: Ed Bartosh; +Cc: toaster

pushed to bitbake and to toaster-next.
-b

On Mon, Sep 28, 2015 at 2:02 AM, Ed Bartosh <ed.bartosh@linux.intel.com> wrote:
> Hi Elliot,
>
> Patch looks good to me, thanks.
>
> Acked-by: Ed Bartosh <ed.bartosh@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@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@yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/toaster
>
> --
> --
> Regards,
> Ed
> --
> _______________________________________________
> toaster mailing list
> toaster@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-10-07  3:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-24 12:34 [review-request][PATCH] toaster: Use Python's mimetypes module Elliot Smith
2015-09-28  9:02 ` Ed Bartosh
2015-10-07  3:05   ` Brian Avery

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.