wiki_notifications_create_defaults.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:website 作者: hackerspace-ntnu 项目源码 文件源码
def handle(self, *args, **options):
        from django.conf import settings
        translation.activate(settings.LANGUAGE_CODE)

        from django.contrib.auth import get_user_model
        from wiki.plugins.notifications import models
        from wiki.plugins.notifications.settings import ARTICLE_EDIT
        from wiki.models import Article
        from django_nyt.utils import subscribe
        from django_nyt.models import Settings
        from django.contrib.contenttypes.models import ContentType

        # User: Settings
        settings_map = {}

        def subscribe_to_article(article, user):
            if user not in settings_map:
                settings_map[user], __ = Settings.objects.get_or_create(
                    user=user)

            return subscribe(
                settings_map[user],
                ARTICLE_EDIT,
                content_type=ContentType.objects.get_for_model(article),
                object_id=article.id)

        subs = 0
        articles = Article.objects.all()
        for article in articles:
            if article.owner:
                subscription = subscribe_to_article(article, article.owner)
                models.ArticleSubscription.objects.get_or_create(
                    article=article,
                    subscription=subscription)
                subs += 1
            for revision in article.articlerevision_set.exclude(
                    user=article.owner).exclude(
                    user=None).values('user').distinct():
                user = get_user_model().objects.get(id=revision['user'])
                subs += 1
                subscription = subscribe_to_article(article, user)
                models.ArticleSubscription.objects.get_or_create(
                    article=article,
                    subscription=subscription)

        print("Created {subs:d} subscriptions on  {arts:d} articles".format(
            subs=subs,
            arts=articles.count(),
        ))

        translation.deactivate()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号