summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrei <mamoutkine@gmail.com>2011-04-15 23:23:02 -0400
committerAndrei <mamoutkine@gmail.com>2011-04-15 23:23:02 -0400
commit17d6da4a1fdd927fe8453c44ec1d0dfb41001389 (patch)
tree408f6a82fde475ae0cb0af09ba0b7a3c09a84452
parent7c5c0a830690a4956393fdd0b21564a3b2e157e5 (diff)
downloadaskbot-17d6da4a1fdd927fe8453c44ec1d0dfb41001389.tar.gz
askbot-17d6da4a1fdd927fe8453c44ec1d0dfb41001389.tar.bz2
askbot-17d6da4a1fdd927fe8453c44ec1d0dfb41001389.zip
basic correctness test passes
-rw-r--r--askbot/management/commands/send_unanswered_question_reminders.py40
-rw-r--r--askbot/models/__init__.py6
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 = []