Example #1
0
def create_subscription_if_not_exists(question, user):
    try:
        subscription = QuestionSubscription.objects.get(question=question,
                                                        user=user)
    except:
        subscription = QuestionSubscription(question=question, user=user)
        subscription.save()
Example #2
0
def question_posted(action, new):
    question = action.node

    if not question.is_notifiable:
        return

    subscribers = User.objects.filter(
        Q(subscription_settings__enable_notifications=True,
          subscription_settings__new_question='i')
        | (Q(subscription_settings__new_question_watched_tags='i')
           & Q(marked_tags__name__in=question.tagnames.split(' '))
           & Q(tag_selections__reason='good'))).exclude(
               id=question.author.id).distinct()

    subscribers = filter_subscribers(subscribers)

    send_template_email(subscribers, "notifications/newquestion.html",
                        {'question': question})

    subscription = QuestionSubscription(question=question,
                                        user=question.author)
    subscription.save()

    new_subscribers = User.objects.filter(
        Q(subscription_settings__all_questions=True)
        | Q(subscription_settings__all_questions_watched_tags=True,
            marked_tags__name__in=question.tagnames.split(' '),
            tag_selections__reason='good'))

    for user in new_subscribers:
        create_subscription_if_not_exists(question, user)
Example #3
0
def question_posted(instance, **kwargs):
    question = instance

    subscribers = User.objects.values('email', 'username').filter(
            Q(subscription_settings__enable_notifications=True, subscription_settings__new_question='i') |
            (Q(subscription_settings__new_question_watched_tags='i') &
              Q(marked_tags__name__in=question.tagnames.split(' ')) &
              Q(tag_selections__reason='good'))
    ).exclude(id=question.author.id).distinct()

    recipients = create_recipients_dict(subscribers)

    send_email(settings.EMAIL_SUBJECT_PREFIX + _("New question on %(app_name)s") % dict(app_name=settings.APP_SHORT_NAME),
               recipients, "notifications/newquestion.html", {
        'question': question,
    })

    if question.author.subscription_settings.questions_asked:
        subscription = QuestionSubscription(question=question, user=question.author)
        subscription.save()

    new_subscribers = User.objects.filter(
            Q(subscription_settings__all_questions=True) |
            Q(subscription_settings__all_questions_watched_tags=True,
                    marked_tags__name__in=question.tagnames.split(' '),
                    tag_selections__reason='good'))

    for user in new_subscribers:
        create_subscription_if_not_exists(question, user)
Example #4
0
    def handle_noargs(self, **options):
        users = User.objects.all()
        for u in users:
            s = SubscriptionSettings(user=u)
            s.save()

            user_questions = u.questions.all()

            for q in user_questions:
                sub = QuestionSubscription(user=u, question=q)
                sub.save()
Example #5
0
def question_viewed(action, new):
    if not action.viewuser.is_authenticated():
        return

    try:
        subscription = QuestionSubscription.objects.get(question=action.node, user=action.viewuser)
        subscription.last_view = datetime.datetime.now()
        subscription.save()
    except:
        if action.viewuser.subscription_settings.questions_viewed:
            subscription = QuestionSubscription(question=action.node, user=action.viewuser)
            subscription.save()
Example #6
0
def create_subscription_if_not_exists(question, user):
    try:
        subscription = QuestionSubscription.objects.get(question=question, user=user)
        return subscription
    except QuestionSubscription.MultipleObjectsReturned:
        pass
    except QuestionSubscription.DoesNotExist:
        subscription = QuestionSubscription(question=question, user=user)
        subscription.save()
        return subscription
    except Exception, e:
        logging.error(e)
Example #7
0
def question_viewed(instance, user, **kwargs):
    if not user.is_authenticated():
        return
        
    try:
        subscription = QuestionSubscription.objects.get(question=instance, user=user)
        subscription.last_view = datetime.datetime.now()
        subscription.save()
    except:
        if user.subscription_settings.questions_viewed:
            subscription = QuestionSubscription(question=instance, user=user)
            subscription.save()