]> git.openstreetmap.org Git - osqa.git/commitdiff
Adds the option to exclude users with unvalidate emails from notifications.
authorhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 8 Jul 2010 20:03:57 +0000 (20:03 +0000)
committerhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 8 Jul 2010 20:03:57 +0000 (20:03 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@504 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/settings/users.py
forum/subscriptions.py

index 069e1f8f3a8522cd86b3cb4390aba41c76e758c2..926d4140bdb987a6da550deba2d0f2907be4f6d5 100644 (file)
@@ -39,6 +39,11 @@ choices=(("ask", _("ask questions")), ("answer", _("provide answers")), ("commen
 required=False,
 ))
 
+DONT_NOTIFY_UNVALIDATED = Setting('DONT_NOTIFY_UNVALIDATED', True, USERS_SET, dict(
+label = _("Don't notify to invalid emails"),
+help_text = _("Do not notify users with unvalidated emails."),
+required=False))
+
 HOLD_PENDING_POSTS_MINUTES = Setting('HOLD_PENDING_POSTS_MINUTES', 120, USERS_SET, dict(
 label=_("Hold pending posts for X minutes"),
 help_text=_("How much time in minutes a post should be kept in session until the user logs in or validates the email.")
index 34bbf982c250bdf2e8a525ee685a2f3645b247fa..7a5bf0684f6aa2d0ac161ad5b0eeef356e5c8b56 100644 (file)
@@ -15,6 +15,14 @@ def create_subscription_if_not_exists(question, user):
         subscription = QuestionSubscription(question=question, user=user)\r
         subscription.save()\r
 \r
+def filter_subscribers(subscribers):\r
+    subscribers = subscribers.exclude(is_active=False)\r
+\r
+    if settings.DONT_NOTIFY_UNVALIDATED:\r
+        return subscribers.exclude(email_isvalid=False)\r
+    else:\r
+        return subscribers\r
+\r
 def question_posted(action, new):\r
     question = action.node\r
 \r
@@ -25,6 +33,8 @@ def question_posted(action, new):
               Q(tag_selections__reason='good'))\r
     ).exclude(id=question.author.id).distinct()\r
 \r
+    subscribers = filter_subscribers(subscribers)\r
+\r
     send_template_email(subscribers, "notifications/newquestion.html", {'question': question})\r
 \r
     if question.author.subscription_settings.questions_asked:\r
@@ -53,6 +63,8 @@ def answer_posted(action, new):
             subscription_settings__subscribed_questions='i'\r
     ).exclude(id=answer.author.id).distinct()\r
 \r
+    subscribers = filter_subscribers(subscribers)\r
+\r
     send_template_email(subscribers, "notifications/newanswer.html", {'answer': answer})\r
 \r
     if answer.author.subscription_settings.questions_answered:\r
@@ -82,6 +94,8 @@ def comment_posted(action, new):
             q_filter, subscription_settings__subscribed_questions='i', subscription_settings__enable_notifications=True\r
     ).exclude(id=comment.user.id).distinct()\r
 \r
+    subscribers = filter_subscribers(subscribers)\r
+\r
 \r
     send_template_email(subscribers, "notifications/newcomment.html", {'comment': comment})\r
 \r
@@ -100,6 +114,8 @@ def answer_accepted(action, new):
             subscription_settings__subscribed_questions='i'\r
     ).exclude(id=action.node.nstate.accepted.by.id).distinct()\r
 \r
+    subscribers = filter_subscribers(subscribers)\r
+\r
     send_template_email(subscribers, "notifications/answeraccepted.html", {'answer': action.node})\r
 \r
 AcceptAnswerAction.hook(answer_accepted)\r
@@ -111,6 +127,8 @@ def member_joined(action, new):
             subscription_settings__member_joins='i'\r
     ).exclude(id=action.user.id).distinct()\r
 \r
+    subscribers = filter_subscribers(subscribers)\r
+\r
     send_template_email(subscribers, "notifications/newmember.html", {'newmember': action.user})\r
 \r
 UserJoinsAction.hook(member_joined)\r