[SOLVED] Testing a brain for teaser/lead image?

Is it possible to determine from a brain if the referenced object has a teaser/lead image associated without fetching the object?

I have asked a similar question (quite) some time ago.

I think the answer is NO.

With archetype I think it was possible, there was even an index, think it was 'hasLeadImage'.

Maybe one could index the width (and height) of the image on save and use those ?

PS: if you solve this, please share

In on project I created a custom indexer (storing a list of the paths of a referenced image in this case). So, it is difficult to get a good common solution for this, but relatively easy to make a custom one.

I use a "related leadimage" behavior to avoid storing a static image in the object itself. Was rather easy to implement. I've put it in a github gist - it is in a "works for me" state...

I ended up with a customer index (specific for our project):

from Acquisition import aq_inner
from zope.interface import Interface
from plone.indexer.decorator import indexer

marker = object

@indexer(Interface)
def has_teaser_image(obj, **kw):

    obj = aq_inner(obj)
    if obj.portal_type in ['Image', 'File']:
        return False

    for name in ('image', 'teaser_image'):
        img = getattr(obj, name, object)
        if img is object:
            continue
        if img is not None:
            return True

    return False

Plone Foundation Code of Conduct