~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to pybb/subscription.py

  • Committer: Holger Rapp
  • Date: 2009-02-25 16:55:36 UTC
  • Revision ID: sirver@kallisto.local-20090225165536-3abfhjx8qsgtzyru
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :(

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)