diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-10-25 23:10:07 -0300 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-10-25 23:10:07 -0300 |
commit | 4e92f62ae9d3fa9f530d58b98348e4e0faefd198 (patch) | |
tree | a13d92833d06926b420f97e835bdbfdf9de0acbd | |
parent | c14ea2cbb12f02ea66ca5be2b8348b338f178dac (diff) | |
download | askbot-4e92f62ae9d3fa9f530d58b98348e4e0faefd198.tar.gz askbot-4e92f62ae9d3fa9f530d58b98348e4e0faefd198.tar.bz2 askbot-4e92f62ae9d3fa9f530d58b98348e4e0faefd198.zip |
moved a celery task from models/__init__.py to tasks.py
-rw-r--r-- | askbot/models/__init__.py | 74 | ||||
-rw-r--r-- | askbot/models/post.py | 2 | ||||
-rw-r--r-- | askbot/tasks.py | 74 |
3 files changed, 75 insertions, 75 deletions
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index fc1e1f3c..c2b6e5c1 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -3059,80 +3059,6 @@ def get_reply_to_addresses(user, post): ).as_email_address() return primary_addr, secondary_addr -#todo: action -@task() -def send_instant_notifications_about_activity_in_post( - update_activity = None, - post = None, - recipients = None, - ): - #reload object from the database - post = Post.objects.get(id=post.id) - if post.is_approved() is False: - return - - if recipients is None: - return - - acceptable_types = const.RESPONSE_ACTIVITY_TYPES_FOR_INSTANT_NOTIFICATIONS - - if update_activity.activity_type not in acceptable_types: - return - - #calculate some variables used in the loop below - from askbot.skins.loaders import get_template - update_type_map = const.RESPONSE_ACTIVITY_TYPE_MAP_FOR_TEMPLATES - update_type = update_type_map[update_activity.activity_type] - origin_post = post.get_origin_post() - headers = mail.thread_headers( - post, - origin_post, - update_activity.activity_type - ) - - logger = logging.getLogger() - if logger.getEffectiveLevel() <= logging.DEBUG: - log_id = uuid.uuid1() - message = 'email-alert %s, logId=%s' % (post.get_absolute_url(), log_id) - logger.debug(message) - else: - log_id = None - - - for user in recipients: - if user.is_blocked(): - continue - - reply_address, alt_reply_address = get_reply_to_addresses(user, post) - - subject_line, body_text = format_instant_notification_email( - to_user = user, - from_user = update_activity.user, - post = post, - reply_address = reply_address, - alt_reply_address = alt_reply_address, - update_type = update_type, - template = get_template('email/instant_notification.html') - ) - - headers['Reply-To'] = reply_address - try: - mail.send_mail( - subject_line=subject_line, - body_text=body_text, - recipient_list=[user.email], - related_object=origin_post, - activity_type=const.TYPE_ACTIVITY_EMAIL_UPDATE_SENT, - headers=headers, - raise_on_failure=True - ) - except askbot_exceptions.EmailNotSent, error: - logger.debug( - '%s, error=%s, logId=%s' % (user.email, error, log_id) - ) - else: - logger.debug('success %s, logId=%s' % (user.email, log_id)) - def notify_author_of_published_revision( revision = None, was_approved = None, **kwargs diff --git a/askbot/models/post.py b/askbot/models/post.py index 36bc5037..daf9c93f 100644 --- a/askbot/models/post.py +++ b/askbot/models/post.py @@ -674,7 +674,7 @@ class Post(models.Model): return cache.cache.set(cache_key, True, settings.NOTIFICATION_DELAY_TIME) - from askbot.models import send_instant_notifications_about_activity_in_post + from askbot.tasks import send_instant_notifications_about_activity_in_post send_instant_notifications_about_activity_in_post.apply_async(( update_activity, self, diff --git a/askbot/tasks.py b/askbot/tasks.py index 650b7aeb..c97c65b6 100644 --- a/askbot/tasks.py +++ b/askbot/tasks.py @@ -168,3 +168,77 @@ def record_question_visit( actor = user, context_object = question_post, ) + +@task() +def send_instant_notifications_about_activity_in_post( + update_activity = None, + post = None, + recipients = None, + ): + #reload object from the database + post = Post.objects.get(id=post.id) + if post.is_approved() is False: + return + + if recipients is None: + return + + acceptable_types = const.RESPONSE_ACTIVITY_TYPES_FOR_INSTANT_NOTIFICATIONS + + if update_activity.activity_type not in acceptable_types: + return + + #calculate some variables used in the loop below + from askbot.skins.loaders import get_template + update_type_map = const.RESPONSE_ACTIVITY_TYPE_MAP_FOR_TEMPLATES + update_type = update_type_map[update_activity.activity_type] + origin_post = post.get_origin_post() + headers = mail.thread_headers( + post, + origin_post, + update_activity.activity_type + ) + + logger = logging.getLogger() + if logger.getEffectiveLevel() <= logging.DEBUG: + log_id = uuid.uuid1() + message = 'email-alert %s, logId=%s' % (post.get_absolute_url(), log_id) + logger.debug(message) + else: + log_id = None + + + for user in recipients: + if user.is_blocked(): + continue + + reply_address, alt_reply_address = get_reply_to_addresses(user, post) + + subject_line, body_text = format_instant_notification_email( + to_user = user, + from_user = update_activity.user, + post = post, + reply_address = reply_address, + alt_reply_address = alt_reply_address, + update_type = update_type, + template = get_template('email/instant_notification.html') + ) + + headers['Reply-To'] = reply_address + try: + mail.send_mail( + subject_line=subject_line, + body_text=body_text, + recipient_list=[user.email], + related_object=origin_post, + activity_type=const.TYPE_ACTIVITY_EMAIL_UPDATE_SENT, + headers=headers, + raise_on_failure=True + ) + except askbot_exceptions.EmailNotSent, error: + logger.debug( + '%s, error=%s, logId=%s' % (user.email, error, log_id) + ) + else: + logger.debug('success %s, logId=%s' % (user.email, log_id)) + |