~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to pybb/subscription.py

  • Committer: Holger Rapp
  • Date: 2009-03-15 16:40:37 UTC
  • mto: This revision was merged to the branch mainline in revision 64.
  • Revision ID: sirver@kallisto.local-20090315164037-6sbx3vlo089d46e8
Added support for profiles. No gravatar yet

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from django.core.mail import EmailMultiAlternatives
2
 
from django.conf import settings
3
 
from django.core.urlresolvers import reverse
4
 
from django.utils.translation import ugettext as _
5
 
from django.utils import translation
6
 
 
7
 
from pybb import settings as pybb_settings
8
 
from pybb.util import absolute_url
9
 
 
10
 
# i18n features disabled. See ticket #47
11
 
 
12
 
TOPIC_SUBSCRIPTION_TEXT_TEMPLATE = lambda: _(u"""New reply from %(username)s to topic that you have subscribed on.
13
 
---
14
 
%(message)s
15
 
---
16
 
See topic: %(post_url)s
17
 
Unsubscribe %(unsubscribe_url)s""")
18
 
 
19
 
PM_RECIPIENT_TEXT_TEMPLATE = lambda: _(u"""User %(username)s have sent your the new private message.
20
 
---
21
 
%(message)s
22
 
---
23
 
See message online: %(pm_url)s""")
24
 
 
25
 
 
26
 
def send_mail(rec_list, subject, text, html=None):
27
 
    """
28
 
    Shortcut for sending email.
29
 
    """
30
 
 
31
 
    from_email = settings.DEFAULT_FROM_EMAIL
32
 
 
33
 
    msg = EmailMultiAlternatives(subject, text, from_email, rec_list)
34
 
    if html:
35
 
        msg.attach_alternative(html, "text/html")
36
 
    if pybb_settings.EMAIL_DEBUG:
37
 
        print '---begin---'
38
 
        print 'To:', rec_list
39
 
        print 'Subject:', subject
40
 
        print 'Body:', text
41
 
        print '---end---'
42
 
    else:
43
 
        msg.send(fail_silently=True)
44
 
 
45
 
 
46
 
def notify_topic_subscribers(post):
47
 
    from pybb.models import Post
48
 
 
49
 
    if pybb_settings.DISABLE_NOTIFICATION:
50
 
        return
51
 
 
52
 
    topic = post.topic
53
 
    if post != topic.head:
54
 
        for user in topic.subscribers.all():
55
 
            if user != post.user:
56
 
                old_lang = translation.get_language()
57
 
                lang = user.pybb_profile.language or 'en'
58
 
                translation.activate(lang)
59
 
 
60
 
                subject = u'RE: %s' % topic.name
61
 
                to_email = user.email
62
 
                text_content = TOPIC_SUBSCRIPTION_TEXT_TEMPLATE() % {
63
 
                    'username': post.user.username,
64
 
                    'message': post.body_text,
65
 
                    'post_url': absolute_url(post.get_absolute_url()),
66
 
                    'unsubscribe_url': absolute_url(reverse('pybb_delete_subscription', args=[post.topic.id])),
67
 
                }
68
 
                #html_content = html_version(post)
69
 
                send_mail([to_email], subject, text_content)
70
 
 
71
 
                translation.activate(old_lang)
72
 
 
73
 
 
74
 
def notify_pm_recipients(pm):
75
 
    if pybb_settings.DISABLE_NOTIFICATION:
76
 
        return
77
 
 
78
 
    if not pm.read:
79
 
        from pybb.models import PrivateMessage
80
 
 
81
 
        old_lang = translation.get_language()
82
 
        lang = pm.dst_user.pybb_profile.language or 'en'
83
 
        translation.activate(lang)
84
 
 
85
 
        print 'LANG', lang
86
 
 
87
 
        subject = _(u'New private message for you')
88
 
        to_email = pm.dst_user.email
89
 
        text_content = PM_RECIPIENT_TEXT_TEMPLATE() % {
90
 
            'username': pm.src_user.username,
91
 
            'message': pm.body_text,
92
 
            'pm_url': absolute_url(pm.get_absolute_url()),
93
 
        }
94
 
        send_mail([to_email], subject, text_content)
95
 
 
96
 
        translation.activate(old_lang)