From 98a412590cf0e8fb1bf7294bb63af96a511de641 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Fri, 3 Jun 2011 00:09:11 -0400 Subject: made some of the missing email alert settings "create themselves" when they are accessed the first time --- askbot/management/commands/send_email_alerts.py | 6 ++-- askbot/management/commands/subscribe_everyone.py | 8 +---- askbot/models/__init__.py | 40 +++++++++++++++++------- askbot/skins/default/templates/question.html | 2 +- askbot/views/commands.py | 9 +++--- 5 files changed, 37 insertions(+), 28 deletions(-) diff --git a/askbot/management/commands/send_email_alerts.py b/askbot/management/commands/send_email_alerts.py index 5f14618b..c9e3ef72 100644 --- a/askbot/management/commands/send_email_alerts.py +++ b/askbot/management/commands/send_email_alerts.py @@ -102,7 +102,7 @@ class Command(NoArgsCommand): should_proceed = True break - #shortcirquit - if there is no ripe feed to work on for this user + #shortcircuit - if there is no ripe feed to work on for this user if should_proceed == False: return {} @@ -455,9 +455,7 @@ class Command(NoArgsCommand): 'benefit from posting one?' ) - feeds = EmailFeedSetting.objects.filter( - subscriber=user, - ) + feeds = EmailFeedSetting.objects.filter(subscriber = user) feed_freq = [feed.frequency for feed in feeds] text += '

' if 'd' in feed_freq: diff --git a/askbot/management/commands/subscribe_everyone.py b/askbot/management/commands/subscribe_everyone.py index 12f7bed2..a7ae6f6c 100644 --- a/askbot/management/commands/subscribe_everyone.py +++ b/askbot/management/commands/subscribe_everyone.py @@ -16,16 +16,10 @@ class Command(NoArgsCommand): for user in User.objects.all(): for feed_type in EmailFeedSetting.FEED_TYPES: - try: - feed_setting = EmailFeedSetting.objects.get( + feed_setting, created = EmailFeedSetting.objects.get_or_create( subscriber=user, feed_type = feed_type[0] ) - except EmailFeedSetting.DoesNotExist: - feed_setting = EmailFeedSetting( - subscriber=user, - feed_type=feed_type[0] - ) feed_setting.frequency = 'w' feed_setting.reported_at = None feed_setting.save() diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index 42690512..ffef9963 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -1469,16 +1469,30 @@ def user_can_moderate_user(self, other): return False -def user_get_q_sel_email_feed_frequency(self): - try: - feed_setting = EmailFeedSetting.objects.get( - subscriber=self, - feed_type='q_sel' - ) - except Exception, e: - raise e +def user_get_followed_question_alert_frequency(self): + feed_setting, created = EmailFeedSetting.objects.get_or_create( + subscriber=self, + feed_type='q_sel' + ) return feed_setting.frequency +def user_subscribe_for_followed_question_alerts(self): + """turns on daily subscription for selected questions + otherwise does nothing + + Returns ``True`` if the subscription was turned on and + ``False`` otherwise + """ + feed_setting, created = EmailFeedSetting.objects.get_or_create( + subscriber = self, + feed_type = 'q_sel' + ) + if feed_setting.frequency == 'n': + feed_setting.frequency = 'd' + feed_setting.save() + return True + return False + def user_get_tag_filtered_questions(self, questions = None): """Returns a query set of questions, tag filtered according to the user choices. Parameter ``questions`` can be either ``None`` @@ -1834,9 +1848,13 @@ def user_update_wildcard_tag_selections( User.add_to_class('is_username_taken',classmethod(user_is_username_taken)) User.add_to_class( - 'get_q_sel_email_feed_frequency', - user_get_q_sel_email_feed_frequency - ) + 'get_followed_question_alert_frequency', + user_get_followed_question_alert_frequency +) +User.add_to_class( + 'subscribe_for_followed_question_alerts', + user_subscribe_for_followed_question_alerts +) User.add_to_class('get_absolute_url', user_get_absolute_url) User.add_to_class('get_avatar_url', user_get_avatar_url) User.add_to_class('get_gravatar_url', user_get_gravatar_url) diff --git a/askbot/skins/default/templates/question.html b/askbot/skins/default/templates/question.html index 250a6962..7bc31373 100644 --- a/askbot/skins/default/templates/question.html +++ b/askbot/skins/default/templates/question.html @@ -308,7 +308,7 @@

{{ answer.email_notify }}