Files
public/rsbu_mapping/resolvers/registry.py

27 lines
945 B
Python

"""Реестр Python-резолверов маппинга РСБУ.
Резолвер — функция fn(doc, template) -> list[dict], возвращающая
сбалансированный набор значений строк rsbu.move.line (Дт/Кт + субконто).
Резолверы регистрируются декоратором @resolver(key) при импорте модуля
и не редактируются пользователем.
"""
RESOLVER_REGISTRY = {}
def resolver(key):
"""Декоратор регистрации резолвера по ключу."""
def deco(fn):
RESOLVER_REGISTRY[key] = fn
return fn
return deco
def get_resolver(key):
return RESOLVER_REGISTRY.get(key)
def resolver_selection():
"""Список ключей резолверов для Selection-поля шаблона."""
return [(key, key) for key in sorted(RESOLVER_REGISTRY)]