X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/3445a2c9a7e7b263f27f89412a42a73d6d240035..2c3ba81e19fd6d84ab208ad90a48fd81e4780c29:/forum/subscriptions.py?ds=sidebyside diff --git a/forum/subscriptions.py b/forum/subscriptions.py index 24479b7..fad24a5 100644 --- a/forum/subscriptions.py +++ b/forum/subscriptions.py @@ -12,9 +12,17 @@ from django.db.models import Q, F def create_subscription_if_not_exists(question, user): try: subscription = QuestionSubscription.objects.get(question=question, user=user) - except: + 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) + + return False def filter_subscribers(subscribers): subscribers = subscribers.exclude(is_active=False) @@ -27,6 +35,9 @@ def filter_subscribers(subscribers): 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') & @@ -57,6 +68,11 @@ def answer_posted(action, new): answer = action.node question = answer.question + logging.error("Answer posted: %s" % str(answer.is_notifiable)) + + if not answer.is_notifiable or not question.is_notifiable: + return + subscribers = question.subscribers.filter( subscription_settings__enable_notifications=True, subscription_settings__notify_answers=True, @@ -76,6 +92,9 @@ def comment_posted(action, new): comment = action.node post = comment.parent + if not comment.is_notifiable or not post.is_notifiable: + return + if post.__class__ == Question: question = post else: @@ -106,6 +125,9 @@ CommentAction.hook(comment_posted) def answer_accepted(action, new): question = action.node.question + if not question.is_notifiable: + return + subscribers = question.subscribers.filter( subscription_settings__enable_notifications=True, subscription_settings__subscribed_questions='i'