]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/subscriptions.py
Converts all instant notifications to the new style emails.
[osqa.git] / forum / subscriptions.py
index c808ce9af16d864cd4f9e63417d9654a04ba6d46..b361823f5ed8b024fb9753d4d905e7c676bf59fc 100644 (file)
@@ -15,12 +15,6 @@ def create_subscription_if_not_exists(question, user):
         subscription = QuestionSubscription(question=question, user=user)\r
         subscription.save()\r
 \r
-def apply_default_filters(queryset, excluded_id):\r
-    return queryset.values('email', 'username').exclude(id=excluded_id)\r
-\r
-def create_recipients_dict(usr_list):\r
-    return [(s['username'], s['email'], {'username': s['username']}) for s in usr_list]\r
-\r
 def question_posted(action, new):\r
     question = action.node\r
 \r
@@ -31,15 +25,8 @@ def question_posted(action, new):
               Q(tag_selections__reason='good'))\r
     ).exclude(id=question.author.id).distinct()\r
 \r
-    #recipients = create_recipients_dict(subscribers)\r
-\r
     send_template_email(subscribers, "notifications/newquestion.html", {'question': question})\r
 \r
-    #send_email(settings.EMAIL_SUBJECT_PREFIX + _("New question on %(app_name)s") % dict(app_name=settings.APP_SHORT_NAME),\r
-    #           recipients, "notifications/newquestion.html", {\r
-    #    'question': question,\r
-    #})\r
-\r
     if question.author.subscription_settings.questions_asked:\r
         subscription = QuestionSubscription(question=question, user=question.author)\r
         subscription.save()\r
@@ -60,18 +47,13 @@ def answer_posted(action, new):
     answer = action.node\r
     question = answer.question\r
 \r
-    subscribers = question.subscribers.values('email', 'username').filter(\r
+    subscribers = question.subscribers.filter(\r
             subscription_settings__enable_notifications=True,\r
             subscription_settings__notify_answers=True,\r
             subscription_settings__subscribed_questions='i'\r
     ).exclude(id=answer.author.id).distinct()\r
-    recipients = create_recipients_dict(subscribers)\r
 \r
-    send_email(settings.EMAIL_SUBJECT_PREFIX + _("New answer to '%(question_title)s'") % dict(question_title=question.title),\r
-               recipients, "notifications/newanswer.html", {\r
-        'question': question,\r
-        'answer': answer\r
-    }, threaded=False)\r
+    send_template_email(subscribers, "notifications/newanswer.html", {'answer': answer})\r
 \r
     if answer.author.subscription_settings.questions_answered:\r
         create_subscription_if_not_exists(question, answer.author)\r
@@ -81,37 +63,27 @@ AnswerAction.hook(answer_posted)
 \r
 def comment_posted(action, new):\r
     comment = action.node\r
-    post = comment.content_object\r
+    post = comment.parent\r
 \r
     if post.__class__ == Question:\r
         question = post\r
     else:\r
         question = post.question\r
 \r
-    subscribers = question.subscribers.values('email', 'username')\r
-\r
     q_filter = Q(subscription_settings__notify_comments=True) | Q(subscription_settings__notify_comments_own_post=True, id=post.author.id)\r
 \r
-    #inreply = re.search('@\w+', comment.comment)\r
-    #if inreply is not None:\r
-    #    q_filter = q_filter | Q(subscription_settings__notify_reply_to_comments=True,\r
-    #                            username__istartswith=inreply.group(0)[1:],\r
-    ##                            comments__object_id=post.id,\r
-    #                            comments__content_type=ContentType.objects.get_for_model(post.__class__)\r
-    #                            )\r
+    inreply = re.search('@\w+', comment.comment)\r
+    if inreply is not None:\r
+        q_filter = q_filter | Q(subscription_settings__notify_reply_to_comments=True,\r
+                                username__istartswith=inreply.group(0)[1:],\r
+                                nodes__parent=post, nodes__node_type="comment")\r
 \r
-    subscribers = subscribers.filter(\r
+    subscribers = question.subscribers.filter(\r
             q_filter, subscription_settings__subscribed_questions='i', subscription_settings__enable_notifications=True\r
     ).exclude(id=comment.user.id).distinct()\r
 \r
-    recipients = create_recipients_dict(subscribers)\r
 \r
-    send_email(settings.EMAIL_SUBJECT_PREFIX + _("New comment on %(question_title)s") % dict(question_title=question.title),\r
-               recipients, "notifications/newcomment.html", {\r
-                'comment': comment,\r
-                'post': post,\r
-                'question': question,\r
-    }, threaded=False)\r
+    send_template_email(subscribers, "notifications/newcomment.html", {'comment': comment})\r
 \r
     if comment.user.subscription_settings.questions_commented:\r
         create_subscription_if_not_exists(question, comment.user)\r
@@ -122,34 +94,24 @@ CommentAction.hook(comment_posted)
 def answer_accepted(action, new):\r
     question = action.node.question\r
 \r
-    subscribers = question.subscribers.values('email', 'username').filter(\r
+    subscribers = question.subscribers.filter(\r
             subscription_settings__enable_notifications=True,\r
             subscription_settings__notify_accepted=True,\r
             subscription_settings__subscribed_questions='i'\r
     ).exclude(id=action.node.nstate.accepted.by.id).distinct()\r
-    recipients = create_recipients_dict(subscribers)\r
 \r
-    send_email(settings.EMAIL_SUBJECT_PREFIX + _("An answer to '%(question_title)s' was accepted") % dict(question_title=question.title),\r
-               recipients, "notifications/answeraccepted.html", {\r
-        'question': question,\r
-        'answer': action.node\r
-    }, threaded=False)\r
+    send_template_email(subscribers, "notifications/answeraccepted.html", {'answer': action.node})\r
 \r
 AcceptAnswerAction.hook(answer_accepted)\r
 \r
 \r
 def member_joined(action, new):\r
-    subscribers = User.objects.values('email', 'username').filter(\r
+    subscribers = User.objects.filter(\r
             subscription_settings__enable_notifications=True,\r
             subscription_settings__member_joins='i'\r
     ).exclude(id=action.user.id).distinct()\r
 \r
-    recipients = create_recipients_dict(subscribers)\r
-\r
-    send_email(settings.EMAIL_SUBJECT_PREFIX + _("%(username)s is a new member on %(app_name)s") % dict(username=action.user.username, app_name=settings.APP_SHORT_NAME),\r
-               recipients, "notifications/newmember.html", {\r
-        'newmember': action.user,\r
-    }, threaded=False)\r
+    send_template_email(subscribers, "notifications/newmember.html", {'newmember': action.user})\r
 \r
 UserJoinsAction.hook(member_joined)\r
 \r