Skip to content

Commit

Permalink
refactor image srcset filter
Browse files Browse the repository at this point in the history
  • Loading branch information
MrTango committed May 5, 2022
1 parent a5c1abc commit 8bec6fd
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
16 changes: 15 additions & 1 deletion plone/outputfilters/filters/image_srcset.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ def __init__(self, context=None, request=None):
self.context = context
self.request = request

@property
def image_scales(self):
registry = getUtility(IRegistry)
settings = registry.forInterface(IImagingSchema, prefix="plone", check=False)
return settings.allowed_sizes

@property
def image_srcsets(self):
registry = getUtility(IRegistry)
Expand Down Expand Up @@ -77,6 +83,10 @@ def convert_to_srcset(self, srcset_name, elem, soup):
)
)
return elem
images_scales = self.image_scales
excluded_scales = srcset_config.get("excludedScales")
if excluded_scales:
images_scales = [scale for scale in self.image_scales if not scale in excluded_scales]
sourceset = srcset_config.get("sourceset")
if not sourceset:
return elem
Expand All @@ -85,9 +95,13 @@ def convert_to_srcset(self, srcset_name, elem, soup):
for i, source in enumerate(sourceset):
scale = source["scale"]
media = source.get("media")
additional_scales = source.get("additionalScales", None)
if additional_scales is None:
additional_scales = [s for s in images_scales if s != scale]
if i == len(sourceset) - 1:
source_tag = soup.new_tag(
"img", src=self.update_src_scale(src=src, scale=scale)
"img", src=self.update_src_scale(src=src, scale=scale),

)
else:
# TODO guess type:
Expand Down
6 changes: 1 addition & 5 deletions plone/outputfilters/filters/resolveuid_and_caption.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,9 +171,7 @@ def __call__(self, data):
srcs = [src.strip().split() for src in srcset.strip().split(',') if src.strip()]
for idx, elm in enumerate(srcs):
image, fullimage, src, description = self.resolve_image(elm[0])
# attributes["width"] = image.width
# attributes["height"] = image.height
srcs[idx][0] = "{0} {1}w".format(src, image.width)
srcs[idx][0] = src
attributes['srcset'] = ','.join(' '.join(src) for src in srcs)
for elem in soup.find_all(['source', 'iframe', 'audio', 'video']):
# parent of SOURCE is video or audio here.
Expand All @@ -190,8 +188,6 @@ def __call__(self, data):
src = attributes.get('src', '')
image, fullimage, src, description = self.resolve_image(src)
attributes["src"] = src
attributes["width"] = image.width
attributes["height"] = image.height


if fullimage is not None:
Expand Down

0 comments on commit 8bec6fd

Please sign in to comment.