From 17d6da4a1fdd927fe8453c44ec1d0dfb41001389 Mon Sep 17 00:00:00 2001 From: Andrei Date: Fri, 15 Apr 2011 23:23:02 -0400 Subject: basic correctness test passes --- .../commands/send_unanswered_question_reminders.py | 40 +++++++++++++--------- askbot/models/__init__.py | 6 ++-- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/askbot/management/commands/send_unanswered_question_reminders.py b/askbot/management/commands/send_unanswered_question_reminders.py index 69c663cf..50ae6451 100644 --- a/askbot/management/commands/send_unanswered_question_reminders.py +++ b/askbot/management/commands/send_unanswered_question_reminders.py @@ -25,40 +25,46 @@ class Command(NoArgsCommand): questions = models.Question.objects.exclude( closed = True ).exclude( - deleted = False - ).exclude( + deleted = True + ).filter( added_at__lt = cutoff_date ).filter( - answer_count__gt = 0 + answer_count = 0 ).order_by('-added_at') #for all users, excluding blocked #for each user, select a tag filtered subset #format the email reminder and send it for user in models.User.objects.exclude(status = 'b'): user_questions = questions.exclude(author = user) - user_questions = user.get_tag_filtered_questions(questions) + user_questions = user.get_tag_filtered_questions(user_questions) final_question_list = list() #todo: rewrite using query set filter #may be a lot more efficient for question in user_questions: activity_type = const.TYPE_ACTIVITY_UNANSWERED_REMINDER_SENT - activity, created = models.Activity.objects.get_or_create( - user = user, - question = question, - activity_type = activity_type - ) - - now = datetime.datetime.now() - recurrence_delay = datetime.timedelta( - askbot_settings.UNANSWERED_REMINDER_FREQUENCY - ) - if created == False: - if activity.active_at >= now + recurrence_delay: + try: + activity = models.Activity.objects.get( + user = user, + question = question, + activity_type = activity_type + ) + now = datetime.datetime.now() + recurrence_delay = datetime.timedelta( + askbot_settings.UNANSWERED_REMINDER_FREQUENCY + ) + if now < activity.active_at + recurrence_delay: continue - + except models.Activity.DoesNotExist: + activity = models.Activity( + user = user, + question = question, + activity_type = activity_type, + content_object = question, + ) activity.active_at = datetime.datetime.now() activity.save() + final_question_list.append(question) question_count = len(final_question_list) if question_count == 0: diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index b5c239dd..b11cb976 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -1500,7 +1500,7 @@ def user_get_tag_filtered_questions(self, questions = None): if questions == None: questions = Question.objects.all() - if self.email_tag_filter_strategy == 'ignored': + if self.email_tag_filter_strategy == const.EXCLUDE_IGNORED: ignored_tags = Tag.objects.filter( user_selections__reason = 'bad', @@ -1515,7 +1515,7 @@ def user_get_tag_filtered_questions(self, questions = None): ).exclude( tags__in = ignored_by_wildcards ) - else: + elif self.email_tag_filter_strategy == const.INCLUDE_INTERESTING: selected_tags = Tag.objects.filter( user_selections__reason = 'good', user_selections__user = self @@ -1528,6 +1528,8 @@ def user_get_tag_filtered_questions(self, questions = None): | models.Q(tags__in = list(selected_by_wildcards)) return questions.filter( tag_filter ) + else: + return questions def get_messages(self): messages = [] -- cgit v1.2.3-1-g7c22