in src/dfcx_scrapi/tools/search_util.py [0:0]
def get_page_df(self, flow_df: pd.DataFrame):
"""Gets pages dataframe for an agent.
Args:
flow_df: flow dataframe from get_flow_df().
Returns:
page dataframe with columns:
flow_name,
page_name,
routes,
event_handlers,
route_groups,
parameters,
entry_fulfillment
"""
page_df = (
flow_df[["flow_name", "flow_id"]]
.assign(page_obj=flow_df.flow_id.apply(self.pages.list_pages))
.explode("page_obj", ignore_index=True)
)
# Handle edge case where Flow exists without Pages
page_df = page_df[~page_df.page_obj.isna()]
page_df = page_df.assign(
page_name=lambda df: df.page_obj.apply(
attrgetter("display_name")
),
entry_fulfillment=lambda df: df.page_obj.apply(
attrgetter("entry_fulfillment")
),
parameters=lambda df: df.page_obj.apply(
attrgetter("form.parameters")
),
route_groups=lambda df: df.page_obj.apply(
attrgetter("transition_route_groups")
),
routes=lambda df: df.page_obj.apply(
attrgetter("transition_routes")
),
event_handlers=lambda df: df.page_obj.apply(
attrgetter("event_handlers")
))
page_df = page_df.drop(columns="page_obj")
# add in the start pages (flow objects)
page_df = pd.concat(
[page_df, flow_df.assign(page_name="START_PAGE")], ignore_index=True
).drop(columns="flow_id")
return page_df