Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / project_notif.py @ 27e51b28

History | View | Annotate | Download (6.9 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 bb6a4465 Giorgos Korfiatis
def membership_request_notify(project, requested_user):
83 bb6a4465 Giorgos Korfiatis
    try:
84 bb6a4465 Giorgos Korfiatis
        notification = build_notification(
85 bb6a4465 Giorgos Korfiatis
            SENDER,
86 bb6a4465 Giorgos Korfiatis
            [project.application.owner.email],
87 cfb7dd4f Giorgos Korfiatis
            _(messages.PROJECT_MEMBERSHIP_REQUEST_SUBJECT) % project.__dict__,
88 8fb8d0cf Giorgos Korfiatis
            template='im/projects/project_membership_request_notification.txt',
89 8fb8d0cf Giorgos Korfiatis
            dictionary={'object': project, 'user': requested_user.email})
90 bb6a4465 Giorgos Korfiatis
        notification.send()
91 bb6a4465 Giorgos Korfiatis
    except NotificationError, e:
92 bb6a4465 Giorgos Korfiatis
        logger.error(e.message)
93 bb6a4465 Giorgos Korfiatis
94 8fb8d0cf Giorgos Korfiatis
95 bb6a4465 Giorgos Korfiatis
def membership_leave_request_notify(project, requested_user):
96 8fb8d0cf Giorgos Korfiatis
    template = 'im/projects/project_membership_leave_request_notification.txt'
97 bb6a4465 Giorgos Korfiatis
    try:
98 bb6a4465 Giorgos Korfiatis
        notification = build_notification(
99 bb6a4465 Giorgos Korfiatis
            SENDER,
100 bb6a4465 Giorgos Korfiatis
            [project.application.owner.email],
101 cfb7dd4f Giorgos Korfiatis
            _(messages.PROJECT_MEMBERSHIP_LEAVE_REQUEST_SUBJECT) %
102 cfb7dd4f Giorgos Korfiatis
            project.__dict__,
103 8fb8d0cf Giorgos Korfiatis
            template=template,
104 8fb8d0cf Giorgos Korfiatis
            dictionary={'object': project, 'user': requested_user.email})
105 bb6a4465 Giorgos Korfiatis
        notification.send()
106 bb6a4465 Giorgos Korfiatis
    except NotificationError, e:
107 bb6a4465 Giorgos Korfiatis
        logger.error(e.message)
108 bb6a4465 Giorgos Korfiatis
109 8fb8d0cf Giorgos Korfiatis
110 a3eb3a95 Giorgos Korfiatis
def application_submit_notify(application):
111 a3eb3a95 Giorgos Korfiatis
    try:
112 a3eb3a95 Giorgos Korfiatis
        notification = build_notification(
113 31bc3a62 Kostas Papadimitriou
            SENDER, NOTIFY_RECIPIENTS,
114 cfb7dd4f Giorgos Korfiatis
            _(messages.PROJECT_CREATION_SUBJECT) % application.__dict__,
115 a3eb3a95 Giorgos Korfiatis
            template='im/projects/project_creation_notification.txt',
116 8fb8d0cf Giorgos Korfiatis
            dictionary={'object': application})
117 a3eb3a95 Giorgos Korfiatis
        notification.send()
118 a3eb3a95 Giorgos Korfiatis
    except NotificationError, e:
119 a3eb3a95 Giorgos Korfiatis
        logger.error(e.message)
120 a3eb3a95 Giorgos Korfiatis
121 8fb8d0cf Giorgos Korfiatis
122 19eb3ee6 Giorgos Korfiatis
def application_deny_notify(application):
123 19eb3ee6 Giorgos Korfiatis
    try:
124 19eb3ee6 Giorgos Korfiatis
        notification = build_notification(
125 19eb3ee6 Giorgos Korfiatis
            SENDER,
126 19eb3ee6 Giorgos Korfiatis
            [application.owner.email],
127 cfb7dd4f Giorgos Korfiatis
            _(messages.PROJECT_DENIED_SUBJECT) % application.__dict__,
128 19eb3ee6 Giorgos Korfiatis
            template='im/projects/project_denial_notification.txt',
129 8fb8d0cf Giorgos Korfiatis
            dictionary={'object': application})
130 19eb3ee6 Giorgos Korfiatis
        notification.send()
131 19eb3ee6 Giorgos Korfiatis
    except NotificationError, e:
132 19eb3ee6 Giorgos Korfiatis
        logger.error(e.message)
133 19eb3ee6 Giorgos Korfiatis
134 8fb8d0cf Giorgos Korfiatis
135 a3eb3a95 Giorgos Korfiatis
def application_approve_notify(application):
136 a3eb3a95 Giorgos Korfiatis
    try:
137 a3eb3a95 Giorgos Korfiatis
        notification = build_notification(
138 a3eb3a95 Giorgos Korfiatis
            SENDER,
139 a3eb3a95 Giorgos Korfiatis
            [application.owner.email],
140 cfb7dd4f Giorgos Korfiatis
            _(messages.PROJECT_APPROVED_SUBJECT) % application.__dict__,
141 a3eb3a95 Giorgos Korfiatis
            template='im/projects/project_approval_notification.txt',
142 8fb8d0cf Giorgos Korfiatis
            dictionary={'object': application})
143 a3eb3a95 Giorgos Korfiatis
        notification.send()
144 a3eb3a95 Giorgos Korfiatis
    except NotificationError, e:
145 a3eb3a95 Giorgos Korfiatis
        logger.error(e.message)
146 a3eb3a95 Giorgos Korfiatis
147 8fb8d0cf Giorgos Korfiatis
148 a3eb3a95 Giorgos Korfiatis
def project_termination_notify(project):
149 3805be31 Giorgos Korfiatis
    app = project.application
150 a3eb3a95 Giorgos Korfiatis
    try:
151 51db2da2 Giorgos Korfiatis
        build_notification(
152 a3eb3a95 Giorgos Korfiatis
            SENDER,
153 a3eb3a95 Giorgos Korfiatis
            [project.application.owner.email],
154 3805be31 Giorgos Korfiatis
            _(messages.PROJECT_TERMINATION_SUBJECT) % app.__dict__,
155 a3eb3a95 Giorgos Korfiatis
            template='im/projects/project_termination_notification.txt',
156 8fb8d0cf Giorgos Korfiatis
            dictionary={'object': project}
157 a3eb3a95 Giorgos Korfiatis
        ).send()
158 a3eb3a95 Giorgos Korfiatis
    except NotificationError, e:
159 a3eb3a95 Giorgos Korfiatis
        logger.error(e.message)
160 a3eb3a95 Giorgos Korfiatis
161 8fb8d0cf Giorgos Korfiatis
162 a3eb3a95 Giorgos Korfiatis
def project_suspension_notify(project):
163 a3eb3a95 Giorgos Korfiatis
    try:
164 51db2da2 Giorgos Korfiatis
        build_notification(
165 a3eb3a95 Giorgos Korfiatis
            SENDER,
166 a3eb3a95 Giorgos Korfiatis
            [project.application.owner.email],
167 cfb7dd4f Giorgos Korfiatis
            _(messages.PROJECT_SUSPENSION_SUBJECT) % project.__dict__,
168 a3eb3a95 Giorgos Korfiatis
            template='im/projects/project_suspension_notification.txt',
169 8fb8d0cf Giorgos Korfiatis
            dictionary={'object': project}
170 a3eb3a95 Giorgos Korfiatis
        ).send()
171 a3eb3a95 Giorgos Korfiatis
    except NotificationError, e:
172 a3eb3a95 Giorgos Korfiatis
        logger.error(e.message)
173 e872c133 Giorgos Korfiatis
174 e872c133 Giorgos Korfiatis
175 e872c133 Giorgos Korfiatis
def project_unsuspension_notify(project):
176 e872c133 Giorgos Korfiatis
    try:
177 e872c133 Giorgos Korfiatis
        build_notification(
178 e872c133 Giorgos Korfiatis
            SENDER,
179 e872c133 Giorgos Korfiatis
            [project.application.owner.email],
180 e872c133 Giorgos Korfiatis
            _(messages.PROJECT_UNSUSPENSION_SUBJECT) % project.__dict__,
181 e872c133 Giorgos Korfiatis
            template='im/projects/project_unsuspension_notification.txt',
182 e872c133 Giorgos Korfiatis
            dictionary={'object': project}
183 e872c133 Giorgos Korfiatis
        ).send()
184 e872c133 Giorgos Korfiatis
    except NotificationError, e:
185 e872c133 Giorgos Korfiatis
        logger.error(e.message)
186 e872c133 Giorgos Korfiatis
187 e872c133 Giorgos Korfiatis
188 e872c133 Giorgos Korfiatis
def project_reinstatement_notify(project):
189 e872c133 Giorgos Korfiatis
    try:
190 e872c133 Giorgos Korfiatis
        build_notification(
191 e872c133 Giorgos Korfiatis
            SENDER,
192 e872c133 Giorgos Korfiatis
            [project.application.owner.email],
193 e872c133 Giorgos Korfiatis
            _(messages.PROJECT_REINSTATEMENT_SUBJECT) % project.__dict__,
194 e872c133 Giorgos Korfiatis
            template='im/projects/project_reinstatement_notification.txt',
195 e872c133 Giorgos Korfiatis
            dictionary={'object': project}
196 e872c133 Giorgos Korfiatis
        ).send()
197 e872c133 Giorgos Korfiatis
    except NotificationError, e:
198 e872c133 Giorgos Korfiatis
        logger.error(e.message)