Как django-messages создают типы уведомлений во время syncdb?

Я использую django-notification и django-messages вместе, и воспользовавшись встроенной в django-messages интеграцией django-notifications с типами уведомлений по умолчанию для получения сообщений, ответил к и т. д.

Однако я не могу определить, как создаются эти объекты NoticeType по умолчанию. Документы django-notification предлагают использовать сигнал post_syncdb в файле management.py, что я и делаю для своих собственных уведомлений. Я не могу найти нигде в коде, что эти типы уведомлений определены. Тем не менее каждый раз, когда я запускаю syncdb в новой базе данных, они волшебным образом появляются.

Свойство «label» типов уведомлений, создаваемых приложением django-messages, выглядит следующим образом:

  • messages_received
  • сообщения_отправлено
  • сообщения_ответил
  • messages_reply_received
  • messages_deleted
  • messages_recovered

person gravelpot    schedule 15.08.2012    source источник


Ответы (1)


django_messages/management.py:

from django.db.models import get_models, signals
from django.conf import settings
from django.utils.translation import ugettext_noop as _

if "notification" in settings.INSTALLED_APPS:
    from notification import models as notification

    def create_notice_types(app, created_models, verbosity, **kwargs):
        notification.create_notice_type("messages_received", _("Message Received"), _("you have received a message"), default=2)
        notification.create_notice_type("messages_sent", _("Message Sent"), _("you have sent a message"), default=1)
        notification.create_notice_type("messages_replied", _("Message Replied"), _("you have replied to a message"), default=1)
        notification.create_notice_type("messages_reply_received", _("Reply Received"), _("you have received a reply to a message"), default=2)
        notification.create_notice_type("messages_deleted", _("Message Deleted"), _("you have deleted a message"), default=1)
        notification.create_notice_type("messages_recovered", _("Message Recovered"), _("you have undeleted a message"), default=1)

    signals.post_syncdb.connect(create_notice_types, sender=notification)
else:
    print "Skipping creation of NoticeTypes as notification app not found"

https://github.com/arneb/django-messages/blob/master/django_messages/management.py

Типы определяются здесь и подключаются к сигналу post_syncdb.

person Casey Kinsey    schedule 15.08.2012
comment
Что ж, теперь я чувствую себя нелепо глупо. Я смотрел на это в Eclipse/PyDev, который скрывает файлы .pyc. По какой-то причине management.py отсутствует, а management.pyc есть. Это именно то, что я искал, но просто недостаточно сложно... :-( - person gravelpot; 15.08.2012
comment
Уже поздно. Пора выпить пива! - person Casey Kinsey; 15.08.2012