allow for images that exceed maximum allowed widht or height if the total number of pixels does not exceed a limit given as the third element in the list for 'media.unauthorized_max_size'
This commit is contained in:
parent
9562417644
commit
2709f73f94
2 changed files with 15 additions and 7 deletions
|
@ -48,7 +48,7 @@ from loops.browser.concept import BaseRelationView, ConceptRelationView
|
||||||
from loops.browser.concept import ConceptConfigureView
|
from loops.browser.concept import ConceptConfigureView
|
||||||
from loops.browser.node import NodeView, node_macros
|
from loops.browser.node import NodeView, node_macros
|
||||||
from loops.common import adapted, NameChooser
|
from loops.common import adapted, NameChooser
|
||||||
from loops.interfaces import IBaseResource, IDocument, IMediaAsset, ITextDocument
|
from loops.interfaces import IBaseResource, IDocument, ITextDocument
|
||||||
from loops.interfaces import IMediaAsset as legacy_IMediaAsset
|
from loops.interfaces import IMediaAsset as legacy_IMediaAsset
|
||||||
from loops.interfaces import ITypeConcept
|
from loops.interfaces import ITypeConcept
|
||||||
from loops.media.interfaces import IMediaAsset
|
from loops.media.interfaces import IMediaAsset
|
||||||
|
@ -179,13 +179,21 @@ class ResourceView(BaseView):
|
||||||
# if self.adapted.isProtected():
|
# if self.adapted.isProtected():
|
||||||
# raise Unauthorized()
|
# raise Unauthorized()
|
||||||
context = self.context
|
context = self.context
|
||||||
|
ct = context.contentType
|
||||||
|
response = self.request.response
|
||||||
self.recordAccess('show', target=self.uniqueId)
|
self.recordAccess('show', target=self.uniqueId)
|
||||||
|
if ct.startswith('image/'):
|
||||||
|
#response.setHeader('Cache-Control', 'public,max-age=86400')
|
||||||
|
response.setHeader('Cache-Control', 'max-age=86400')
|
||||||
|
adobj = adapted(context)
|
||||||
|
if IMediaAsset.providedBy(adobj):
|
||||||
|
from loops.media.browser.asset import MediaAssetView
|
||||||
|
view = MediaAssetView(context, self.request)
|
||||||
|
return view.show(useAttachment)
|
||||||
ti = IType(context).typeInterface
|
ti = IType(context).typeInterface
|
||||||
if ti is not None:
|
if ti is not None:
|
||||||
context = ti(context)
|
context = ti(context)
|
||||||
data = context.data
|
data = context.data
|
||||||
response = self.request.response
|
|
||||||
ct = context.contentType
|
|
||||||
if useAttachment:
|
if useAttachment:
|
||||||
filename = adapted(self.context).localFilename or getName(self.context)
|
filename = adapted(self.context).localFilename or getName(self.context)
|
||||||
filename = NameChooser(getParent(self.context)).normalizeName(filename)
|
filename = NameChooser(getParent(self.context)).normalizeName(filename)
|
||||||
|
@ -195,9 +203,6 @@ class ResourceView(BaseView):
|
||||||
if ct.startswith('text/') and not useAttachment:
|
if ct.startswith('text/') and not useAttachment:
|
||||||
response.setHeader('Content-Type', 'text/html')
|
response.setHeader('Content-Type', 'text/html')
|
||||||
return self.renderText(data, ct)
|
return self.renderText(data, ct)
|
||||||
if ct.startswith('image/') and not useAttachment:
|
|
||||||
#response.setHeader('Cache-Control', 'public,max-age=86400')
|
|
||||||
response.setHeader('Cache-Control', 'max-age=86400')
|
|
||||||
response.setHeader('Content-Type', ct)
|
response.setHeader('Content-Type', ct)
|
||||||
# set Last-Modified header
|
# set Last-Modified header
|
||||||
modified = self.modifiedRaw
|
modified = self.modifiedRaw
|
||||||
|
|
|
@ -76,9 +76,12 @@ class MediaAssetView(ResourceView):
|
||||||
maxSize = self.typeOptions('media.unauthorized_max_size')
|
maxSize = self.typeOptions('media.unauthorized_max_size')
|
||||||
if maxSize:
|
if maxSize:
|
||||||
(w, h) = self.adapted.getImageSize(data=data)
|
(w, h) = self.adapted.getImageSize(data=data)
|
||||||
|
if len(maxSize) > 2 and maxSize[2]:
|
||||||
|
if w * h <= int(maxSize[2]): # number of pixels
|
||||||
|
return True
|
||||||
if w > int(maxSize[0]):
|
if w > int(maxSize[0]):
|
||||||
return False
|
return False
|
||||||
if len(maxSize) > 1 and h > int(maxSize[1]):
|
if len(maxSize) > 1 and maxSize[1] and h > int(maxSize[1]):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue