mirror of
https://github.com/jazzband/django-downloadview.git
synced 2026-03-16 22:40:25 +00:00
Fixed ObjectDownloadView.object access with a cache. Using client-side basename instead of server-side filename to guess the mimetype.
This commit is contained in:
parent
9e4e7bfc0a
commit
434db01168
1 changed files with 12 additions and 3 deletions
|
|
@ -69,8 +69,8 @@ class DownloadMixin(object):
|
|||
try:
|
||||
return self.mime_type
|
||||
except AttributeError:
|
||||
filename = self.get_filename()
|
||||
self.mime_type, self.encoding = mimetypes.guess_type(filename)
|
||||
basename = self.get_basename()
|
||||
self.mime_type, self.encoding = mimetypes.guess_type(basename)
|
||||
if not self.mime_type:
|
||||
self.mime_type = 'application/octet-stream'
|
||||
return self.mime_type
|
||||
|
|
@ -204,9 +204,18 @@ class ObjectDownloadView(DownloadMixin, BaseDetailView):
|
|||
#: Optional name of the model's attribute which contains the size.
|
||||
size_field = None
|
||||
|
||||
def get_object(self):
|
||||
"""Return model instance, using cache or a get_queryset()."""
|
||||
try:
|
||||
return self._object
|
||||
except AttributeError:
|
||||
self._object = super(ObjectDownloadView, self).get_object()
|
||||
return self._object
|
||||
|
||||
object = property(get_object)
|
||||
|
||||
def get_fieldfile(self):
|
||||
"""Return FieldFile instance (i.e. FileField attribute)."""
|
||||
self.object = self.get_object()
|
||||
try:
|
||||
return self.fieldfile
|
||||
except AttributeError:
|
||||
|
|
|
|||
Loading…
Reference in a new issue