Пирамидальные события внутри моделей

Я использую Пирамиду 1.4. Я хотел бы сгенерировать некоторые пользовательские события Pyramid из классов моей модели. События генерируются так:

request.registry.notify(MyCustomEventType("Here it comes"))

Как видите, мне нужен доступ к реестру приложений. Мне известно о get_current_registry()< /а> функция. Но меня также беспокоит этот комментарий с сайта Pyramid:

«Эту функцию следует использовать крайне экономно, обычно только в коде модульного тестирования»

Вопросы:

  • Является ли генерация событий Pyramid из уровня данных (модели SQLAlchemy) плохой идеей?
  • Если нет, как более цивилизованно получить доступ к реестру приложений? (Возможно расширение Base модели?)
  • Если да, есть ли альтернатива, которую я мог бы использовать? Я знаю о событиях SQLAlchemy, но не смог найти возможность генерировать пользовательские события.

Обоснование:

По сути, я разделил свое приложение на функции и стараюсь, чтобы они не были связаны. Для этого мне иногда нужен IoC: я планировал использовать события как средство для этого. Например, всякий раз, когда пользователь отвечает на вопрос, генерируется событие. Затем на такое событие можно подписаться в других частях приложения. Мне нравится хранить логику приложения в моделях, а не в представлениях. Отсюда и описанная проблема.


person julx    schedule 03.02.2013    source источник
comment
Ты смог это упорядочить? Я пытаюсь понять то же самое.   -  person Joe Steeve    schedule 19.03.2014
comment
Я действительно не нашел правильного способа доступа к реестру.   -  person julx    schedule 19.03.2014


Ответы (1)


Каков вариант использования событий пирамиды из ваших моделей? В общем, это было бы плохой идеей.

Что касается подключения приложения/моделей. Большая часть этого делается в вызове инициализации в вашем main(), который передает настройки модели, чтобы дать ей настройки подключения и тому подобное. Я бы позаботился о том, чтобы любая логика, связанная с объединением вещей, была ограничена одним вызовом функции при запуске приложения.

В конце концов, я бы предположил, что то, что вы хотите, лучше сделать по-другому.

person Rick    schedule 04.02.2013