From: hernani Date: Thu, 8 Jul 2010 20:03:57 +0000 (+0000) Subject: Adds the option to exclude users with unvalidate emails from notifications. X-Git-Tag: live~630 X-Git-Url: https://git.openstreetmap.org./osqa.git/commitdiff_plain/61486d20fd5bf0a187868e3997ca7cdabe8acde7 Adds the option to exclude users with unvalidate emails from notifications. git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@504 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- diff --git a/forum/settings/users.py b/forum/settings/users.py index 069e1f8..926d414 100644 --- a/forum/settings/users.py +++ b/forum/settings/users.py @@ -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.") diff --git a/forum/subscriptions.py b/forum/subscriptions.py index 34bbf98..7a5bf06 100644 --- a/forum/subscriptions.py +++ b/forum/subscriptions.py @@ -15,6 +15,14 @@ def create_subscription_if_not_exists(question, user): subscription = QuestionSubscription(question=question, user=user) subscription.save() +def filter_subscribers(subscribers): + subscribers = subscribers.exclude(is_active=False) + + if settings.DONT_NOTIFY_UNVALIDATED: + return subscribers.exclude(email_isvalid=False) + else: + return subscribers + def question_posted(action, new): question = action.node @@ -25,6 +33,8 @@ def question_posted(action, new): Q(tag_selections__reason='good')) ).exclude(id=question.author.id).distinct() + subscribers = filter_subscribers(subscribers) + send_template_email(subscribers, "notifications/newquestion.html", {'question': question}) if question.author.subscription_settings.questions_asked: @@ -53,6 +63,8 @@ def answer_posted(action, new): subscription_settings__subscribed_questions='i' ).exclude(id=answer.author.id).distinct() + subscribers = filter_subscribers(subscribers) + send_template_email(subscribers, "notifications/newanswer.html", {'answer': answer}) if answer.author.subscription_settings.questions_answered: @@ -82,6 +94,8 @@ def comment_posted(action, new): q_filter, subscription_settings__subscribed_questions='i', subscription_settings__enable_notifications=True ).exclude(id=comment.user.id).distinct() + subscribers = filter_subscribers(subscribers) + send_template_email(subscribers, "notifications/newcomment.html", {'comment': comment}) @@ -100,6 +114,8 @@ def answer_accepted(action, new): subscription_settings__subscribed_questions='i' ).exclude(id=action.node.nstate.accepted.by.id).distinct() + subscribers = filter_subscribers(subscribers) + send_template_email(subscribers, "notifications/answeraccepted.html", {'answer': action.node}) AcceptAnswerAction.hook(answer_accepted) @@ -111,6 +127,8 @@ def member_joined(action, new): subscription_settings__member_joins='i' ).exclude(id=action.user.id).distinct() + subscribers = filter_subscribers(subscribers) + send_template_email(subscribers, "notifications/newmember.html", {'newmember': action.user}) UserJoinsAction.hook(member_joined)