Revision 84498bca snf-astakos-app/astakos/im/project_notif.py

b/snf-astakos-app/astakos/im/project_notif.py
79 79
        logger.error(e.message)
80 80

  
81 81

  
82
def membership_request_notify(project, requested_user):
83
    try:
84
        notification = build_notification(
85
            SENDER,
86
            [project.application.owner.email],
87
            _(messages.PROJECT_MEMBERSHIP_REQUEST_SUBJECT) % project.__dict__,
88
            template='im/projects/project_membership_request_notification.txt',
89
            dictionary={'object': project, 'user': requested_user.email})
90
        notification.send()
91
    except NotificationError, e:
92
        logger.error(e.message)
82
MEMBERSHIP_REQUEST_DATA = {
83
    "join": lambda p: (
84
        _(messages.PROJECT_MEMBERSHIP_REQUEST_SUBJECT) % p.__dict__,
85
        "im/projects/project_membership_request_notification.txt"),
86
    "leave": lambda p: (
87
        _(messages.PROJECT_MEMBERSHIP_LEAVE_REQUEST_SUBJECT) % p.__dict__,
88
        "im/projects/project_membership_leave_request_notification.txt"),
89
}
93 90

  
94 91

  
95
def membership_leave_request_notify(project, requested_user):
96
    template = 'im/projects/project_membership_leave_request_notification.txt'
92
def membership_request_notify(project, requested_user, action):
93
    subject, template = MEMBERSHIP_REQUEST_DATA[action](project)
97 94
    try:
98
        notification = build_notification(
99
            SENDER,
100
            [project.application.owner.email],
101
            _(messages.PROJECT_MEMBERSHIP_LEAVE_REQUEST_SUBJECT) %
102
            project.__dict__,
95
        build_notification(
96
            SENDER, [project.application.owner.email], subject,
103 97
            template=template,
104
            dictionary={'object': project, 'user': requested_user.email})
105
        notification.send()
106
    except NotificationError, e:
107
        logger.error(e.message)
108

  
109

  
110
def application_submit_notify(application):
111
    try:
112
        notification = build_notification(
113
            SENDER, NOTIFY_RECIPIENTS,
114
            _(messages.PROJECT_CREATION_SUBJECT) % application.__dict__,
115
            template='im/projects/project_creation_notification.txt',
116
            dictionary={'object': application})
117
        notification.send()
118
    except NotificationError, e:
119
        logger.error(e.message)
120

  
121

  
122
def application_deny_notify(application):
123
    try:
124
        notification = build_notification(
125
            SENDER,
126
            [application.owner.email],
127
            _(messages.PROJECT_DENIED_SUBJECT) % application.__dict__,
128
            template='im/projects/project_denial_notification.txt',
129
            dictionary={'object': application})
130
        notification.send()
131
    except NotificationError, e:
132
        logger.error(e.message)
133

  
134

  
135
def application_approve_notify(application):
136
    try:
137
        notification = build_notification(
138
            SENDER,
139
            [application.owner.email],
140
            _(messages.PROJECT_APPROVED_SUBJECT) % application.__dict__,
141
            template='im/projects/project_approval_notification.txt',
142
            dictionary={'object': application})
143
        notification.send()
98
            dictionary={'object': project, 'user': requested_user.email}
99
        ).send()
144 100
    except NotificationError, e:
145 101
        logger.error(e.message)
146 102

  
147 103

  
148
def project_termination_notify(project):
149
    app = project.application
150
    try:
151
        build_notification(
152
            SENDER,
153
            [project.application.owner.email],
154
            _(messages.PROJECT_TERMINATION_SUBJECT) % app.__dict__,
155
            template='im/projects/project_termination_notification.txt',
156
            dictionary={'object': project}
157
        ).send()
158
    except NotificationError, e:
159
        logger.error(e.message)
104
APPLICATION_DATA = {
105
    "submit": lambda a: (
106
        NOTIFY_RECIPIENTS,
107
        _(messages.PROJECT_CREATION_SUBJECT) % a.__dict__,
108
        "im/projects/project_creation_notification.txt"),
109
    "deny": lambda a: (
110
        [a.owner.email],
111
        _(messages.PROJECT_DENIED_SUBJECT) % a.__dict__,
112
        "im/projects/project_denial_notification.txt"),
113
    "approve": lambda a: (
114
        [a.owner.email],
115
        _(messages.PROJECT_APPROVED_SUBJECT) % a.__dict__,
116
        "im/projects/project_approval_notification.txt"),
117
}
160 118

  
161 119

  
162
def project_suspension_notify(project):
120
def application_notify(application, action):
121
    recipients, subject, template = APPLICATION_DATA[action](application)
163 122
    try:
164 123
        build_notification(
165
            SENDER,
166
            [project.application.owner.email],
167
            _(messages.PROJECT_SUSPENSION_SUBJECT) % project.__dict__,
168
            template='im/projects/project_suspension_notification.txt',
169
            dictionary={'object': project}
124
            SENDER, recipients, subject,
125
            template=template,
126
            dictionary={'object': application}
170 127
        ).send()
171 128
    except NotificationError, e:
172 129
        logger.error(e.message)
173 130

  
174 131

  
175
def project_unsuspension_notify(project):
176
    try:
177
        build_notification(
178
            SENDER,
179
            [project.application.owner.email],
180
            _(messages.PROJECT_UNSUSPENSION_SUBJECT) % project.__dict__,
181
            template='im/projects/project_unsuspension_notification.txt',
182
            dictionary={'object': project}
183
        ).send()
184
    except NotificationError, e:
185
        logger.error(e.message)
132
PROJECT_DATA = {
133
    "terminate": lambda p: (
134
        _(messages.PROJECT_TERMINATION_SUBJECT) % p.application.__dict__,
135
        "im/projects/project_termination_notification.txt"),
136
    "reinstate": lambda p: (
137
        _(messages.PROJECT_REINSTATEMENT_SUBJECT) % p.__dict__,
138
        "im/projects/project_reinstatement_notification.txt"),
139
    "suspend": lambda p: (
140
        _(messages.PROJECT_SUSPENSION_SUBJECT) % p.__dict__,
141
        "im/projects/project_suspension_notification.txt"),
142
    "unsuspend": lambda p: (
143
        _(messages.PROJECT_UNSUSPENSION_SUBJECT) % p.__dict__,
144
        "im/projects/project_unsuspension_notification.txt"),
145
}
186 146

  
187 147

  
188
def project_reinstatement_notify(project):
148
def project_notify(project, action):
149
    subject, template = PROJECT_DATA[action](project)
189 150
    try:
190 151
        build_notification(
191
            SENDER,
192
            [project.application.owner.email],
193
            _(messages.PROJECT_REINSTATEMENT_SUBJECT) % project.__dict__,
194
            template='im/projects/project_reinstatement_notification.txt',
152
            SENDER, [project.application.owner.email], subject,
153
            template=template,
195 154
            dictionary={'object': project}
196 155
        ).send()
197 156
    except NotificationError, e:

Also available in: Unified diff