|
@@ -1,30 +1,31 @@
|
1
|
1
|
# -*- coding: utf-8 -*-
|
2
|
2
|
import datetime
|
|
3
|
+import typing
|
3
|
4
|
|
4
|
5
|
from email.header import Header
|
5
|
6
|
from email.mime.multipart import MIMEMultipart
|
6
|
7
|
from email.mime.text import MIMEText
|
7
|
8
|
|
8
|
|
-import lxml
|
9
|
9
|
from lxml.html.diff import htmldiff
|
10
|
10
|
|
11
|
11
|
from mako.template import Template
|
12
|
12
|
|
13
|
13
|
from tracim.lib.base import logger
|
|
14
|
+from tracim.lib.email import EmailSender
|
14
|
15
|
from tracim.lib.email import SmtpConfiguration
|
15
|
16
|
from tracim.lib.email import send_email_through
|
16
|
|
-from tracim.lib.email import EmailSender
|
17
|
17
|
from tracim.lib.user import UserApi
|
18
|
|
-from tracim.lib.workspace import WorkspaceApi
|
19
|
18
|
from tracim.lib.utils import lazy_ugettext as l_
|
20
|
|
-from tracim.model.serializers import Context
|
|
19
|
+from tracim.lib.workspace import WorkspaceApi
|
|
20
|
+from tracim.model.auth import User
|
|
21
|
+from tracim.model.data import ActionDescription
|
|
22
|
+from tracim.model.data import Content
|
|
23
|
+from tracim.model.data import ContentType
|
|
24
|
+from tracim.model.data import UserRoleInWorkspace
|
21
|
25
|
from tracim.model.serializers import CTX
|
|
26
|
+from tracim.model.serializers import Context
|
22
|
27
|
from tracim.model.serializers import DictLikeClass
|
23
|
28
|
|
24
|
|
-from tracim.model.data import Content, UserRoleInWorkspace, ContentType, \
|
25
|
|
- ActionDescription
|
26
|
|
-from tracim.model.auth import User
|
27
|
|
-
|
28
|
29
|
|
29
|
30
|
class INotifier(object):
|
30
|
31
|
"""
|
|
@@ -212,17 +213,22 @@ class EmailNotifier(object):
|
212
|
213
|
)
|
213
|
214
|
|
214
|
215
|
@staticmethod
|
215
|
|
- def _log_notification(
|
216
|
|
- recipient: str,
|
217
|
|
- subject: str
|
|
216
|
+ def log_notification(
|
|
217
|
+ action: str,
|
|
218
|
+ recipient: typing.Optional[str],
|
|
219
|
+ subject: typing.Optional[str],
|
218
|
220
|
) -> None:
|
219
|
221
|
"""Log notification metadata."""
|
220
|
222
|
from tracim.config.app_cfg import CFG
|
221
|
223
|
log_path = CFG.get_instance().EMAIL_NOTIFICATION_LOG_FILE_PATH
|
222
|
224
|
if log_path:
|
|
225
|
+ # TODO - A.P - 2017-09-06 - file logging inefficiency
|
|
226
|
+ # Updating a document with 100 users to notify will leads to open
|
|
227
|
+ # and close the file 100 times.
|
223
|
228
|
with open(log_path, 'a') as log_file:
|
224
|
229
|
print(
|
225
|
230
|
datetime.datetime.now(),
|
|
231
|
+ action,
|
226
|
232
|
recipient,
|
227
|
233
|
subject,
|
228
|
234
|
sep='|',
|
|
@@ -296,8 +302,9 @@ class EmailNotifier(object):
|
296
|
302
|
message.attach(part1)
|
297
|
303
|
message.attach(part2)
|
298
|
304
|
|
299
|
|
- self._log_notification(
|
300
|
|
- recipient=message['for'],
|
|
305
|
+ self.log_notification(
|
|
306
|
+ action='CREATED',
|
|
307
|
+ recipient=message['To'],
|
301
|
308
|
subject=message['Subject'],
|
302
|
309
|
)
|
303
|
310
|
send_email_through(async_email_sender.send_mail, message)
|