Source code for collective.transmute.steps.default_page
"""
Pipeline steps for handling default pages in ``collective.transmute``.
This module provides async generator functions for processing and merging default
page items in the transformation pipeline. These steps use metadata and settings to
merge parent item data into default pages and update relations.
"""
from collective.transmute import _types as t
from collective.transmute.utils.default_page import handle_default_page
[docs]
async def process_default_page(
item: t.PloneItem,
state: t.PipelineState,
settings: t.TransmuteSettings,
) -> t.PloneItemGenerator:
"""
Process and merge default page items using metadata and settings.
Parameters
----------
item : PloneItem
The item to process.
state : PipelineState
The pipeline state object.
settings : TransmuteSettings
The transmute settings object.
Yields
------
PloneItem or None
The updated item, merged with parent data if applicable, or ``None`` if
waiting for a parent.
Example
-------
.. code-block:: pycon
>>> async for result in process_default_page(item, state, settings):
... print(result)
"""
metadata = state.metadata
item_uid = item["UID"]
if metadata:
if parent_item := metadata.__processing_default_page__.pop(item_uid, None):
parent_uid = parent_item["UID"]
keys_from_parent = settings.default_pages["keys_from_parent"]
item = handle_default_page(parent_item, item, keys_from_parent)
metadata.__fix_relations__[item_uid] = parent_uid
yield item
elif default_page_uid := metadata.default_page.pop(item_uid, None):
metadata.__processing_default_page__[default_page_uid] = item
yield None
else:
yield item
else:
# If no metadata, we cannot process default pages
yield item