diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-06-03 00:09:11 -0400 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-06-03 00:09:11 -0400 |
commit | 98a412590cf0e8fb1bf7294bb63af96a511de641 (patch) | |
tree | 3756313dccbb1976108d59b659c7ed19cd553566 | |
parent | ad0f47235d6c4e726af697da3054ce212bd1e3ea (diff) | |
download | askbot-98a412590cf0e8fb1bf7294bb63af96a511de641.tar.gz askbot-98a412590cf0e8fb1bf7294bb63af96a511de641.tar.bz2 askbot-98a412590cf0e8fb1bf7294bb63af96a511de641.zip |
made some of the missing email alert settings "create themselves" when they are accessed the first time
-rw-r--r-- | askbot/management/commands/send_email_alerts.py | 6 | ||||
-rw-r--r-- | askbot/management/commands/subscribe_everyone.py | 8 | ||||
-rw-r--r-- | askbot/models/__init__.py | 40 | ||||
-rw-r--r-- | askbot/skins/default/templates/question.html | 2 | ||||
-rw-r--r-- | 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 += '<p></p>' 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 @@ <p style="padding-left:3px"> {{ answer.email_notify }} <label for="question-subscribe-updates"> - {% set email_feed_frequency = request.user.get_q_sel_email_feed_frequency() %} + {% set email_feed_frequency = request.user.get_followed_question_alert_frequency() %} {% if email_feed_frequency =='n' %} {% trans %}Notify me once a day when there are any new answers{% endtrans %} {% elif email_feed_frequency =='d' %} diff --git a/askbot/views/commands.py b/askbot/views/commands.py index e2293262..a7a6de4f 100644 --- a/askbot/views/commands.py +++ b/askbot/views/commands.py @@ -287,13 +287,12 @@ def vote(request, id): response_data['message'] = \ _('subscription saved, %(email)s needs validation, see %(details_url)s') \ % {'email':user.email,'details_url':reverse('faq') + '#validate'} - feed_setting = models.EmailFeedSetting.objects.get(subscriber=user,feed_type='q_sel') - if feed_setting.frequency == 'n': - feed_setting.frequency = 'd' - feed_setting.save() + + subscribed = user.subscribe_for_followed_question_alerts() + if subscribed: if 'message' in response_data: response_data['message'] += '<br/>' - response_data['message'] = _('email update frequency has been set to daily') + response_data['message'] += _('email update frequency has been set to daily') #response_data['status'] = 1 #responst_data['allowed'] = 1 else: |