diff --git a/pillar/celery/search_index_tasks.py b/pillar/celery/search_index_tasks.py index 743eca08..e6fbf5cd 100644 --- a/pillar/celery/search_index_tasks.py +++ b/pillar/celery/search_index_tasks.py @@ -41,14 +41,26 @@ def _handle_picture(node: dict, to_index: dict): picture = files_collection.find_one(lookup) img_variation_t = next( - (item for item in picture['variations'] + (item for item in picture.get('variations', []) if item['size'] == 't'), None) - if img_variation_t: + if not img_variation_t: + return + + try: + pic_pid = picture['project'] + except KeyError: + if picture.get('backend') != 'pillar': + # We know for sure that locally saved images don't need regeneration, + # so don't bother warning about that. + log.warning('Picture %s has no project ID, unable to regenerate link', + picture['_id']) + to_index['picture'] = img_variation_t['link'] + else: to_index['picture'] = generate_link( picture['backend'], img_variation_t['file_path'], - project_id=str(picture['project']), + project_id=str(pic_pid), is_public=True)