Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
nk20-scripts
Manage
Activity
Members
Labels
Plan
Issues
1
Issue boards
Milestones
Wiki
Code
Merge requests
1
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
BDE
nk20-scripts
Merge requests
!5
send summary script
Code
Review changes
Check out branch
Download
Patches
Plain diff
Open
send summary script
notes_report
into
master
Overview
1
Commits
1
Pipelines
0
Changes
1
Open
hugoooo
requested to merge
notes_report
into
master
1 year ago
Overview
1
Commits
1
Pipelines
0
Changes
1
Expand
Script d'envoi du récapitulatif de trésorerie (sans les transactions)
👍
0
👎
0
Merge request reports
Compare
master
master (HEAD)
and
latest version
latest version
f76acb32
1 commit,
1 year ago
1 file
+
144
−
0
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
management/commands/send_summary_notes_report.py
0 → 100644
+
144
−
0
Options
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from
datetime
import
date
from
django.core.mail
import
send_mail
from
django.core.management
import
BaseCommand
from
django.db.models
import
Q
from
django.template.loader
import
render_to_string
from
django.utils.translation
import
activate
from
note.models
import
NoteUser
,
NoteClub
from
treasury.models
import
NoteSummary
class
Command
(
BaseCommand
):
def
add_arguments
(
self
,
parser
):
parser
.
add_argument
(
"
--negative-amount
"
,
"
-n
"
,
action
=
'
store
'
,
type
=
int
,
default
=
1000
,
help
=
"
Maximum amount to be considered as very negative (inclusive)
"
)
def
handle
(
self
,
*
args
,
**
options
):
activate
(
'
fr
'
)
if
options
[
'
negative_amount
'
]
==
0
:
# Don't log empty notes
options
[
'
negative_amount
'
]
=
1
# User notes
positive_user_notes
=
NoteUser
.
objects
.
filter
(
Q
(
balance__gt
=
0
)
).
distinct
()
positive_user_notes_bde
=
positive_user_notes
.
filter
(
Q
(
user__memberships__club__name
=
'
BDE
'
)
&
Q
(
user__memberships__date_end__gte
=
date
.
today
())
).
distinct
()
zero_user_notes
=
NoteUser
.
objects
.
filter
(
Q
(
balance
=
0
)
).
distinct
()
zero_user_notes_bde
=
zero_user_notes
.
filter
(
Q
(
user__memberships__club__name
=
'
BDE
'
)
&
Q
(
user__memberships__date_end__gte
=
date
.
today
())
).
distinct
()
negative_user_notes
=
NoteUser
.
objects
.
filter
(
Q
(
balance__lt
=
0
)
).
distinct
()
negative_user_notes_bde
=
negative_user_notes
.
filter
(
Q
(
user__memberships__club__name
=
'
BDE
'
)
&
Q
(
user__memberships__date_end__gte
=
date
.
today
())
).
distinct
()
vnegative_user_notes
=
NoteUser
.
objects
.
filter
(
Q
(
balance__lte
=-
options
[
"
negative_amount
"
])
).
distinct
()
vnegative_user_notes_bde
=
vnegative_user_notes
.
filter
(
Q
(
user__memberships__club__name
=
'
BDE
'
)
&
Q
(
user__memberships__date_end__gte
=
date
.
today
())
).
distinct
()
total_positive_user
=
positive_user_notes
.
count
()
balance_positive_user
=
sum
(
note
.
balance
for
note
in
positive_user_notes
.
all
())
total_positive_user_bde
=
positive_user_notes_bde
.
count
()
balance_positive_user_bde
=
sum
(
note
.
balance
for
note
in
positive_user_notes_bde
.
all
())
total_zero_user
=
zero_user_notes
.
count
()
total_zero_user_bde
=
zero_user_notes_bde
.
count
()
total_negative_user
=
negative_user_notes
.
count
()
balance_negative_user
=
sum
(
note
.
balance
for
note
in
negative_user_notes
.
all
())
total_negative_user_bde
=
negative_user_notes_bde
.
count
()
balance_negative_user_bde
=
sum
(
note
.
balance
for
note
in
negative_user_notes_bde
.
all
())
total_vnegative_user
=
vnegative_user_notes
.
count
()
balance_vnegative_user
=
sum
(
note
.
balance
for
note
in
vnegative_user_notes
.
all
())
total_vnegative_user_bde
=
vnegative_user_notes_bde
.
count
()
balance_vnegative_user_bde
=
sum
(
note
.
balance
for
note
in
vnegative_user_notes_bde
.
all
())
#Club notes
positive_club_notes
=
NoteClub
.
objects
.
filter
(
Q
(
balance__gt
=
0
)
).
distinct
()
positive_club_notes_nbde
=
positive_club_notes
.
filter
(
~
Q
(
club__name
=
'
BDE
'
)
&
~
Q
(
club__name
=
'
Kfet
'
)
&
~
Q
(
club__name__iendswith
=
'
- BDE
'
)).
distinct
()
zero_club_notes
=
NoteClub
.
objects
.
filter
(
Q
(
balance
=
0
)
).
distinct
()
zero_club_notes_nbde
=
zero_club_notes
.
filter
(
~
Q
(
club__name
=
'
BDE
'
)
&
~
Q
(
club__name
=
'
Kfet
'
)
&
~
Q
(
club__name__iendswith
=
'
- BDE
'
)).
distinct
()
negative_club_notes
=
NoteClub
.
objects
.
filter
(
Q
(
balance__lt
=
0
)
).
distinct
()
negative_club_notes_nbde
=
negative_club_notes
.
filter
(
~
Q
(
club__name
=
'
BDE
'
)
&
~
Q
(
club__name
=
'
Kfet
'
)
&
~
Q
(
club__name__iendswith
=
'
- BDE
'
)).
distinct
()
total_positive_club
=
positive_club_notes
.
count
()
balance_positive_club
=
sum
(
note
.
balance
for
note
in
positive_club_notes
.
all
())
total_positive_club_nbde
=
positive_club_notes_nbde
.
count
()
balance_positive_club_nbde
=
sum
(
note
.
balance
for
note
in
positive_club_notes_nbde
.
all
())
total_zero_club
=
zero_club_notes
.
count
()
total_zero_club_nbde
=
zero_club_notes_nbde
.
count
()
total_negative_club
=
negative_club_notes
.
count
()
balance_negative_club
=
sum
(
note
.
balance
for
note
in
negative_club_notes
.
all
())
total_negative_club_nbde
=
negative_club_notes_nbde
.
count
()
balance_negative_club_nbde
=
sum
(
note
.
balance
for
note
in
negative_club_notes_nbde
.
all
())
last_summary
=
NoteSummary
.
objects
.
order_by
(
'
-date
'
).
first
()
summary
=
NoteSummary
.
objects
.
create
(
total_positive_user
=
total_positive_user
,
balance_positive_user
=
balance_positive_user
,
total_positive_user_bde
=
total_positive_user_bde
,
balance_positive_user_bde
=
balance_positive_user_bde
,
total_zero_user
=
total_zero_user
,
total_zero_user_bde
=
total_zero_user_bde
,
total_negative_user
=
total_negative_user
,
balance_negative_user
=
balance_negative_user
,
total_negative_user_bde
=
total_negative_user_bde
,
balance_negative_user_bde
=
balance_negative_user_bde
,
total_vnegative_user
=
total_vnegative_user
,
balance_vnegative_user
=
balance_vnegative_user
,
total_vnegative_user_bde
=
total_vnegative_user_bde
,
balance_vnegative_user_bde
=
balance_vnegative_user_bde
,
total_positive_club
=
total_positive_club
,
balance_positive_club
=
balance_positive_club
,
total_positive_club_nbde
=
total_positive_club_nbde
,
balance_positive_club_nbde
=
balance_positive_club_nbde
,
total_zero_club
=
total_zero_club
,
total_zero_club_nbde
=
total_zero_club_nbde
,
total_negative_club
=
total_negative_club
,
balance_negative_club
=
balance_negative_club
,
total_negative_club_nbde
=
total_negative_club_nbde
,
balance_negative_club_nbde
=
balance_negative_club_nbde
,
)
balance_difference_user
=
(
balance_positive_user
-
balance_negative_user
)
-
(
last_summary
.
balance_positive_user
-
last_summary
.
balance_negative_user
)
balance_difference_club
=
(
balance_positive_club
-
balance_negative_club
)
-
(
last_summary
.
balance_positive_club
-
last_summary
.
balance_negative_club
)
plain_text
=
render_to_string
(
"
note/mails/summary_notes_report.txt
"
,
context
=
dict
(
summary
=
summary
,
balance_difference_user
=
balance_difference_user
,
balance_difference_club
=
balance_difference_club
))
html
=
render_to_string
(
"
note/mails/summary_notes_report.html
"
,
context
=
dict
(
summary
=
summary
,
balance_difference_user
=
balance_difference_user
,
balance_difference_club
=
balance_difference_club
))
send_mail
(
"
[Note Kfet] Récapitulatif de trésorerie
"
,
plain_text
,
"
Note Kfet 2020 <notekfet2020@crans.org>
"
,
recipient_list
=
[
"
respo-info.bde@lists.crans.org
"
,
"
tresorerie.bde@lists.crans.org
"
],
html_message
=
html
)
Loading