Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / project_notif.py @ 9202a57d

History | View | Annotate | Download (5.6 kB)

1 91884d63 Giorgos Korfiatis
# Copyright 2013 GRNET S.A. All rights reserved.
2 91884d63 Giorgos Korfiatis
#
3 91884d63 Giorgos Korfiatis
# Redistribution and use in source and binary forms, with or
4 91884d63 Giorgos Korfiatis
# without modification, are permitted provided that the following
5 91884d63 Giorgos Korfiatis
# conditions are met:
6 91884d63 Giorgos Korfiatis
#
7 91884d63 Giorgos Korfiatis
#   1. Redistributions of source code must retain the above
8 91884d63 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
9 91884d63 Giorgos Korfiatis
#      disclaimer.
10 91884d63 Giorgos Korfiatis
#
11 91884d63 Giorgos Korfiatis
#   2. Redistributions in binary form must reproduce the above
12 91884d63 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
13 91884d63 Giorgos Korfiatis
#      disclaimer in the documentation and/or other materials
14 91884d63 Giorgos Korfiatis
#      provided with the distribution.
15 91884d63 Giorgos Korfiatis
#
16 91884d63 Giorgos Korfiatis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 91884d63 Giorgos Korfiatis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 91884d63 Giorgos Korfiatis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 91884d63 Giorgos Korfiatis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 91884d63 Giorgos Korfiatis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 91884d63 Giorgos Korfiatis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 91884d63 Giorgos Korfiatis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 91884d63 Giorgos Korfiatis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 91884d63 Giorgos Korfiatis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 91884d63 Giorgos Korfiatis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 91884d63 Giorgos Korfiatis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 91884d63 Giorgos Korfiatis
# POSSIBILITY OF SUCH DAMAGE.
28 91884d63 Giorgos Korfiatis
#
29 91884d63 Giorgos Korfiatis
# The views and conclusions contained in the software and
30 91884d63 Giorgos Korfiatis
# documentation are those of the authors and should not be
31 91884d63 Giorgos Korfiatis
# interpreted as representing official policies, either expressed
32 91884d63 Giorgos Korfiatis
# or implied, of GRNET S.A.
33 91884d63 Giorgos Korfiatis
34 a3eb3a95 Giorgos Korfiatis
import logging
35 a3eb3a95 Giorgos Korfiatis
from django.utils.translation import ugettext as _
36 8998f09a Sofia Papagiannaki
from astakos.im import settings
37 a3eb3a95 Giorgos Korfiatis
from astakos.im.notifications import build_notification, NotificationError
38 cfb7dd4f Giorgos Korfiatis
from astakos.im import messages
39 a3eb3a95 Giorgos Korfiatis
40 a3eb3a95 Giorgos Korfiatis
logger = logging.getLogger(__name__)
41 a3eb3a95 Giorgos Korfiatis
42 a3eb3a95 Giorgos Korfiatis
MEM_CHANGE_NOTIF = {
43 8fb8d0cf Giorgos Korfiatis
    'subject':   _(messages.PROJECT_MEMBERSHIP_CHANGE_SUBJECT),
44 a3eb3a95 Giorgos Korfiatis
    'template': 'im/projects/project_membership_change_notification.txt',
45 8fb8d0cf Giorgos Korfiatis
}
46 a3eb3a95 Giorgos Korfiatis
47 466cc12c Giorgos Korfiatis
MEM_ENROLL_NOTIF = {
48 8fb8d0cf Giorgos Korfiatis
    'subject':   _(messages.PROJECT_MEMBERSHIP_ENROLL_SUBJECT),
49 466cc12c Giorgos Korfiatis
    'template': 'im/projects/project_membership_enroll_notification.txt',
50 8fb8d0cf Giorgos Korfiatis
}
51 466cc12c Giorgos Korfiatis
52 a3eb3a95 Giorgos Korfiatis
SENDER = settings.SERVER_EMAIL
53 31bc3a62 Kostas Papadimitriou
NOTIFY_RECIPIENTS = [e[1] for e in settings.MANAGERS + settings.HELPDESK]
54 a3eb3a95 Giorgos Korfiatis
55 8fb8d0cf Giorgos Korfiatis
56 a3eb3a95 Giorgos Korfiatis
def membership_change_notify(project, user, action):
57 a3eb3a95 Giorgos Korfiatis
    try:
58 a3eb3a95 Giorgos Korfiatis
        notification = build_notification(
59 a3eb3a95 Giorgos Korfiatis
            SENDER,
60 a3eb3a95 Giorgos Korfiatis
            [user.email],
61 a3eb3a95 Giorgos Korfiatis
            MEM_CHANGE_NOTIF['subject'] % project.__dict__,
62 8fb8d0cf Giorgos Korfiatis
            template=MEM_CHANGE_NOTIF['template'],
63 8fb8d0cf Giorgos Korfiatis
            dictionary={'object': project, 'action': action})
64 a3eb3a95 Giorgos Korfiatis
        notification.send()
65 a3eb3a95 Giorgos Korfiatis
    except NotificationError, e:
66 a3eb3a95 Giorgos Korfiatis
        logger.error(e.message)
67 a3eb3a95 Giorgos Korfiatis
68 8fb8d0cf Giorgos Korfiatis
69 466cc12c Giorgos Korfiatis
def membership_enroll_notify(project, user):
70 466cc12c Giorgos Korfiatis
    try:
71 466cc12c Giorgos Korfiatis
        notification = build_notification(
72 466cc12c Giorgos Korfiatis
            SENDER,
73 466cc12c Giorgos Korfiatis
            [user.email],
74 466cc12c Giorgos Korfiatis
            MEM_ENROLL_NOTIF['subject'] % project.__dict__,
75 8fb8d0cf Giorgos Korfiatis
            template=MEM_ENROLL_NOTIF['template'],
76 8fb8d0cf Giorgos Korfiatis
            dictionary={'object': project})
77 466cc12c Giorgos Korfiatis
        notification.send()
78 466cc12c Giorgos Korfiatis
    except NotificationError, e:
79 466cc12c Giorgos Korfiatis
        logger.error(e.message)
80 466cc12c Giorgos Korfiatis
81 8fb8d0cf Giorgos Korfiatis
82 84498bca Giorgos Korfiatis
MEMBERSHIP_REQUEST_DATA = {
83 84498bca Giorgos Korfiatis
    "join": lambda p: (
84 84498bca Giorgos Korfiatis
        _(messages.PROJECT_MEMBERSHIP_REQUEST_SUBJECT) % p.__dict__,
85 84498bca Giorgos Korfiatis
        "im/projects/project_membership_request_notification.txt"),
86 84498bca Giorgos Korfiatis
    "leave": lambda p: (
87 84498bca Giorgos Korfiatis
        _(messages.PROJECT_MEMBERSHIP_LEAVE_REQUEST_SUBJECT) % p.__dict__,
88 84498bca Giorgos Korfiatis
        "im/projects/project_membership_leave_request_notification.txt"),
89 84498bca Giorgos Korfiatis
}
90 bb6a4465 Giorgos Korfiatis
91 8fb8d0cf Giorgos Korfiatis
92 84498bca Giorgos Korfiatis
def membership_request_notify(project, requested_user, action):
93 9202a57d Giorgos Korfiatis
    owner = project.owner
94 9202a57d Giorgos Korfiatis
    if owner is None:
95 9202a57d Giorgos Korfiatis
        return
96 84498bca Giorgos Korfiatis
    subject, template = MEMBERSHIP_REQUEST_DATA[action](project)
97 bb6a4465 Giorgos Korfiatis
    try:
98 84498bca Giorgos Korfiatis
        build_notification(
99 9202a57d Giorgos Korfiatis
            SENDER, [owner.email], subject,
100 8fb8d0cf Giorgos Korfiatis
            template=template,
101 84498bca Giorgos Korfiatis
            dictionary={'object': project, 'user': requested_user.email}
102 84498bca Giorgos Korfiatis
        ).send()
103 a3eb3a95 Giorgos Korfiatis
    except NotificationError, e:
104 a3eb3a95 Giorgos Korfiatis
        logger.error(e.message)
105 a3eb3a95 Giorgos Korfiatis
106 8fb8d0cf Giorgos Korfiatis
107 84498bca Giorgos Korfiatis
APPLICATION_DATA = {
108 84498bca Giorgos Korfiatis
    "submit": lambda a: (
109 84498bca Giorgos Korfiatis
        NOTIFY_RECIPIENTS,
110 84498bca Giorgos Korfiatis
        _(messages.PROJECT_CREATION_SUBJECT) % a.__dict__,
111 84498bca Giorgos Korfiatis
        "im/projects/project_creation_notification.txt"),
112 84498bca Giorgos Korfiatis
    "deny": lambda a: (
113 9202a57d Giorgos Korfiatis
        [a.applicant.email],
114 84498bca Giorgos Korfiatis
        _(messages.PROJECT_DENIED_SUBJECT) % a.__dict__,
115 84498bca Giorgos Korfiatis
        "im/projects/project_denial_notification.txt"),
116 84498bca Giorgos Korfiatis
    "approve": lambda a: (
117 9202a57d Giorgos Korfiatis
        [a.applicant.email],
118 84498bca Giorgos Korfiatis
        _(messages.PROJECT_APPROVED_SUBJECT) % a.__dict__,
119 84498bca Giorgos Korfiatis
        "im/projects/project_approval_notification.txt"),
120 84498bca Giorgos Korfiatis
}
121 a3eb3a95 Giorgos Korfiatis
122 8fb8d0cf Giorgos Korfiatis
123 84498bca Giorgos Korfiatis
def application_notify(application, action):
124 84498bca Giorgos Korfiatis
    recipients, subject, template = APPLICATION_DATA[action](application)
125 a3eb3a95 Giorgos Korfiatis
    try:
126 51db2da2 Giorgos Korfiatis
        build_notification(
127 84498bca Giorgos Korfiatis
            SENDER, recipients, subject,
128 84498bca Giorgos Korfiatis
            template=template,
129 84498bca Giorgos Korfiatis
            dictionary={'object': application}
130 a3eb3a95 Giorgos Korfiatis
        ).send()
131 a3eb3a95 Giorgos Korfiatis
    except NotificationError, e:
132 a3eb3a95 Giorgos Korfiatis
        logger.error(e.message)
133 e872c133 Giorgos Korfiatis
134 e872c133 Giorgos Korfiatis
135 84498bca Giorgos Korfiatis
PROJECT_DATA = {
136 84498bca Giorgos Korfiatis
    "terminate": lambda p: (
137 362dadaa Giorgos Korfiatis
        _(messages.PROJECT_TERMINATION_SUBJECT) % p.__dict__,
138 84498bca Giorgos Korfiatis
        "im/projects/project_termination_notification.txt"),
139 84498bca Giorgos Korfiatis
    "reinstate": lambda p: (
140 84498bca Giorgos Korfiatis
        _(messages.PROJECT_REINSTATEMENT_SUBJECT) % p.__dict__,
141 84498bca Giorgos Korfiatis
        "im/projects/project_reinstatement_notification.txt"),
142 84498bca Giorgos Korfiatis
    "suspend": lambda p: (
143 84498bca Giorgos Korfiatis
        _(messages.PROJECT_SUSPENSION_SUBJECT) % p.__dict__,
144 84498bca Giorgos Korfiatis
        "im/projects/project_suspension_notification.txt"),
145 84498bca Giorgos Korfiatis
    "unsuspend": lambda p: (
146 84498bca Giorgos Korfiatis
        _(messages.PROJECT_UNSUSPENSION_SUBJECT) % p.__dict__,
147 84498bca Giorgos Korfiatis
        "im/projects/project_unsuspension_notification.txt"),
148 84498bca Giorgos Korfiatis
}
149 e872c133 Giorgos Korfiatis
150 e872c133 Giorgos Korfiatis
151 84498bca Giorgos Korfiatis
def project_notify(project, action):
152 9202a57d Giorgos Korfiatis
    owner = project.owner
153 9202a57d Giorgos Korfiatis
    if owner is None:
154 9202a57d Giorgos Korfiatis
        return
155 84498bca Giorgos Korfiatis
    subject, template = PROJECT_DATA[action](project)
156 e872c133 Giorgos Korfiatis
    try:
157 e872c133 Giorgos Korfiatis
        build_notification(
158 9202a57d Giorgos Korfiatis
            SENDER, [owner.email], subject,
159 84498bca Giorgos Korfiatis
            template=template,
160 e872c133 Giorgos Korfiatis
            dictionary={'object': project}
161 e872c133 Giorgos Korfiatis
        ).send()
162 e872c133 Giorgos Korfiatis
    except NotificationError, e:
163 e872c133 Giorgos Korfiatis
        logger.error(e.message)