from __future__ import annotations from typing import Any from .addressing import effective_address_lists, recipient_template_values from .field_values import effective_entry_field_values from .models import CampaignConfig, EntryConfig def build_template_values(config: CampaignConfig, entry: EntryConfig) -> dict[str, Any]: values: dict[str, Any] = {} for field in config.fields: values.setdefault(field.name, "") values.setdefault(f"global::{field.name}", "") values.setdefault(f"local::{field.name}", "") for key, value in config.global_values.items(): values[f"global::{key}"] = value for key, value in effective_entry_field_values(config, entry).items(): values[key] = value values[f"local::{key}"] = value if entry.id: values["local::id"] = entry.id values["local::active"] = entry.active values.update(recipient_template_values(effective_address_lists(config, entry))) return values