Skip to content
GitLab
Explore
Sign in
Commits on Source (1)
Add script to send weekly report to all members
· 630fc9a0
ynerant
authored
Aug 03, 2020
630fc9a0
Hide whitespace changes
Inline
Side-by-side
management/commands/send_reports.py
0 → 100644
View file @
630fc9a0
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from
datetime
import
timedelta
from
django.core.management
import
BaseCommand
from
django.db.models
import
Q
from
django.template.loader
import
render_to_string
from
django.utils
import
timezone
from
django.utils.translation
import
activate
from
note.models
import
NoteUser
,
Transaction
from
note.tables
import
HistoryTable
class
Command
(
BaseCommand
):
def
handle
(
self
,
*
args
,
**
options
):
activate
(
'
fr
'
)
notes
=
NoteUser
.
objects
.
filter
(
user__memberships__date_end__gte
=
timezone
.
now
(),
).
distinct
().
all
()
for
note
in
notes
:
now
=
timezone
.
now
()
last_week
=
now
-
timedelta
(
days
=
7
)
last_transactions
=
Transaction
.
objects
.
filter
(
Q
(
source
=
note
)
|
Q
(
destination
=
note
),
created_at__gte
=
last_week
,
).
all
()
if
not
last_transactions
.
exists
():
continue
table
=
HistoryTable
(
last_transactions
)
incoming
=
sum
(
tr
.
total
for
tr
in
last_transactions
if
tr
.
destination
.
pk
==
note
.
pk
)
outcoming
=
sum
(
tr
.
total
for
tr
in
last_transactions
if
tr
.
source
.
pk
==
note
.
pk
)
context
=
dict
(
user
=
note
.
user
,
table
=
table
,
incoming
=
incoming
,
outcoming
=
outcoming
,
diff
=
incoming
-
outcoming
,
now
=
now
,
last_week
=
last_week
,
)
html
=
render_to_string
(
"
note/mails/weekly_report.html
"
,
context
)
note
.
user
.
email_user
(
"
[Note Kfet] Rapport de la Note Kfet
"
,
html
,
html_message
=
html
)