summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2011-06-03 00:09:11 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2011-06-03 00:09:11 -0400
commit98a412590cf0e8fb1bf7294bb63af96a511de641 (patch)
tree3756313dccbb1976108d59b659c7ed19cd553566
parentad0f47235d6c4e726af697da3054ce212bd1e3ea (diff)
downloadaskbot-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.py6
-rw-r--r--askbot/management/commands/subscribe_everyone.py8
-rw-r--r--askbot/models/__init__.py40
-rw-r--r--askbot/skins/default/templates/question.html2
-rw-r--r--askbot/views/commands.py9
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: