Simplified getting mimetypes from files by merging 2 implementations (document based and file based)
This commit is contained in:
+7
-41
@@ -84,7 +84,7 @@ def get_error_icon_file_path():
|
|||||||
return os.path.join(settings.STATIC_ROOT, MIMETYPE_ICONS_DIRECTORY_NAME, ERROR_FILE_NAME)
|
return os.path.join(settings.STATIC_ROOT, MIMETYPE_ICONS_DIRECTORY_NAME, ERROR_FILE_NAME)
|
||||||
|
|
||||||
|
|
||||||
def get_mimetype(filepath):
|
def get_mimetype(file_description, filepath):
|
||||||
"""
|
"""
|
||||||
Determine a file's mimetype by calling the system's libmagic
|
Determine a file's mimetype by calling the system's libmagic
|
||||||
library via python-magic or fallback to use python's mimetypes
|
library via python-magic or fallback to use python's mimetypes
|
||||||
@@ -92,50 +92,16 @@ def get_mimetype(filepath):
|
|||||||
"""
|
"""
|
||||||
file_mimetype = u''
|
file_mimetype = u''
|
||||||
file_mime_encoding = u''
|
file_mime_encoding = u''
|
||||||
source = None
|
|
||||||
if USE_PYTHON_MAGIC:
|
if USE_PYTHON_MAGIC:
|
||||||
if os.path.exists(filepath):
|
mime = magic.Magic(mime=True)
|
||||||
try:
|
file_mimetype = mime.from_buffer(file_description.read())
|
||||||
source = open(filepath, 'rb')
|
file_description.seek(0)
|
||||||
mime = magic.Magic(mime=True)
|
mime_encoding = magic.Magic(mime_encoding=True)
|
||||||
file_mimetype = mime.from_buffer(source.read())
|
file_mime_encoding = mime_encoding.from_buffer(file_description.read())
|
||||||
source.seek(0)
|
|
||||||
mime_encoding = magic.Magic(mime_encoding=True)
|
|
||||||
file_mime_encoding = mime_encoding.from_buffer(source.read())
|
|
||||||
finally:
|
|
||||||
if source:
|
|
||||||
source.close()
|
|
||||||
else:
|
else:
|
||||||
path, filename = os.path.split(filepath)
|
path, filename = os.path.split(filepath)
|
||||||
file_mimetype, file_mime_encoding = mimetypes.guess_type(filename)
|
file_mimetype, file_mime_encoding = mimetypes.guess_type(filename)
|
||||||
|
|
||||||
return file_mimetype, file_mime_encoding
|
file_description.close()
|
||||||
|
|
||||||
|
|
||||||
def get_document_mimetype(document):
|
|
||||||
"""
|
|
||||||
Determine a documents mimetype by calling the system's libmagic
|
|
||||||
library via python-magic or fallback to use python's mimetypes
|
|
||||||
library
|
|
||||||
"""
|
|
||||||
file_mimetype = u''
|
|
||||||
file_mime_encoding = u''
|
|
||||||
|
|
||||||
source = None
|
|
||||||
|
|
||||||
if USE_PYTHON_MAGIC:
|
|
||||||
if document.exists():
|
|
||||||
try:
|
|
||||||
source = document.open()
|
|
||||||
mime = magic.Magic(mime=True)
|
|
||||||
file_mimetype = mime.from_buffer(source.read())
|
|
||||||
source.seek(0)
|
|
||||||
mime_encoding = magic.Magic(mime_encoding=True)
|
|
||||||
file_mime_encoding = mime_encoding.from_buffer(source.read())
|
|
||||||
finally:
|
|
||||||
if source:
|
|
||||||
source.close()
|
|
||||||
else:
|
|
||||||
file_mimetype, file_mime_encoding = mimetypes.guess_type(document.get_fullname())
|
|
||||||
|
|
||||||
return file_mimetype, file_mime_encoding
|
return file_mimetype, file_mime_encoding
|
||||||
|
|||||||
Reference in New Issue
Block a user