Skip to content
GitLab
Explore
Sign in
Commits on Source (1)
Send a mail to webmasters when an error occurs (in production mode)
· e59001b1
ynerant
authored
Apr 25, 2020
e59001b1
Hide whitespace changes
Inline
Side-by-side
__init__.py
View file @
e59001b1
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
default_app_config
=
'
scripts.apps.ScriptsConfig
'
apps.py
0 → 100644
View file @
e59001b1
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from
django.apps
import
AppConfig
from
django.core.signals
import
got_request_exception
class
ScriptsConfig
(
AppConfig
):
name
=
'
scripts
'
def
ready
(
self
):
from
.
import
signals
print
(
"
scripts are ready
"
)
got_request_exception
.
connect
(
signals
.
send_mail_on_exception
)
signals.py
0 → 100644
View file @
e59001b1
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
import
os
import
sys
from
django.conf
import
settings
from
django.core.mail
import
send_mail
from
django.template.loader
import
render_to_string
from
django.views.debug
import
ExceptionReporter
def
send_mail_on_exception
(
request
,
**
kwargs
):
"""
When an error occurs on the Note Kfet, a mail is automatically sent to the webmasters.
"""
if
settings
.
DEBUG
:
# Don't need to send a mail in debug mode, errors are already displayed in console and in the response view.
return
try
:
exc_info
=
sys
.
exc_info
()
exc_type
=
exc_info
[
0
]
exc
=
exc_info
[
1
]
tb
=
exc_info
[
2
]
reporter
=
ExceptionReporter
(
request
=
request
,
exc_type
=
exc_type
,
exc_value
=
exc
,
tb
=
tb
)
note_sender
=
os
.
getenv
(
"
NOTE_MAIL
"
,
"
notekfet@example.com
"
)
webmaster
=
os
.
getenv
(
"
WEBMASTER_MAIL
"
,
"
notekfet@example.com
"
)
message
=
render_to_string
(
'
scripts/mail-error500.txt
'
,
context
=
{
"
error
"
:
reporter
.
get_traceback_text
()})
message_html
=
render_to_string
(
'
scripts/mail-error500.html
'
,
context
=
{
"
error
"
:
reporter
.
get_traceback_html
()})
send_mail
(
"
Erreur dans la Note Kfet
"
,
message
,
note_sender
,
[
webmaster
],
html_message
=
message_html
)
except
BaseException
as
e
:
sys
.
stderr
.
write
(
"
Une erreur est survenue lors de l
'
envoi d
'
un mail, pour signaler une erreur.
"
)
raise
e