Я создаю приложение рабочего процесса с пирамидой и ищу, как сделать приложение модулируемым: это означает создание основного приложения с моделями sqlalchemy, базовыми формами с wtforms и некоторыми базовыми шаблонами с mako.
Базовая структура приложения «Основное»:
App_Core/core.ini
/setup.py
/...
/App_Core/
/__init__.py
/models.py
/forms.py
/utils.py
/templates/
/templates/base.mako...
/static/
/static/staticfiles...
Моя цель — создать одно приложение для каждого рабочего процесса, которое будет включено в основное приложение: представляется возможным сделать это с помощью функции includeme, предоставляемой пирамидой.
Я хочу включить каждый рабочий процесс через файл core.ini, например:
pyramid.includes =
workflow_app1
workflow_app2
workflow_app3
...
Я определил новое приложение под названием workflow_app1 со следующей структурой:
worflow_app1/
/setup.py
/...
/workflow_app1/
/__init__.py
/models.py
/forms.py
/views.py
/templates/
/templates/workflow_app1.mako
/...
А файл _init_.py будет содержать функцию includeme и определять новые маршруты:
def includeme(config):
config.add_route('route1', '/route1/')
config.add_route('route2', '/route2/')
config.scan()
Когда я пишу представление для worflow_app1, я выполняю рендеринг в шаблон, включенный в это приложение, но когда я вызываю его из основного приложения, он не может отображать шаблон и выдает следующую ошибку:
TopLevelLookupException: Cant locate template for uri 'workflow-app1.mako'
Эта ошибка вполне логична, потому что в директиве mako.directories указан путь App_Core_PATH/templates, поэтому мой шаблон должен находиться в той же папке.
Вопрос1: Можно ли сделать мако поиск в каждой папке модулей нужных шаблонов?
Вопрос 2. Можно ли сделать так, чтобы workflow-app1.mako наследовал base.mako от основного приложения?
Заранее спасибо за ответ.