Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
SCODOC_R6A06
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jean-Marie Place
SCODOC_R6A06
Commits
d2784a42
Commit
d2784a42
authored
3 months ago
by
Emmanuel Viennet
Browse files
Options
Downloads
Patches
Plain Diff
Fix: filtres par annee_naissance et primo.
parent
06222df8
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
app/scodoc/sco_report.py
+69
-40
69 additions, 40 deletions
app/scodoc/sco_report.py
with
69 additions
and
40 deletions
app/scodoc/sco_report.py
+
69
−
40
View file @
d2784a42
...
@@ -123,13 +123,18 @@ def formsemestre_etuds_stats(
...
@@ -123,13 +123,18 @@ def formsemestre_etuds_stats(
if
e_dict
[
"
specialite
"
]:
if
e_dict
[
"
specialite
"
]:
bs
.
append
(
e_dict
[
"
specialite
"
])
bs
.
append
(
e_dict
[
"
specialite
"
])
e_dict
[
"
bac-specialite
"
]
=
"
"
.
join
(
bs
)
e_dict
[
"
bac-specialite
"
]
=
"
"
.
join
(
bs
)
# Ajoute clé 'annee_naissance'
e_dict
[
"
annee_naissance
"
]
=
(
etud
.
date_naissance
.
year
if
etud
.
date_naissance
else
""
)
#
#
if
(
not
only_primo
)
or
is_primo_etud
(
e
_dict
,
formsemestre
):
if
(
not
only_primo
)
or
is_primo_etud
(
e
tud
,
formsemestre
):
etuds
.
append
(
e_dict
)
etuds
.
append
(
e_dict
)
return
etuds
return
etuds
def
is_primo_etud
(
etud
:
dict
,
formsemestre
:
FormSemestre
):
def
_
is_primo_etud
_dict
(
e_dict
:
dict
,
formsemestre
:
FormSemestre
):
# XXX
"""
Determine si un (filled) etud a été inscrit avant ce semestre.
"""
Determine si un (filled) etud a été inscrit avant ce semestre.
Regarde la liste des semestres dans lesquels l
'
étudiant est inscrit.
Regarde la liste des semestres dans lesquels l
'
étudiant est inscrit.
Si semestre pair, considère comme primo-entrants ceux qui étaient
Si semestre pair, considère comme primo-entrants ceux qui étaient
...
@@ -138,17 +143,39 @@ def is_primo_etud(etud: dict, formsemestre: FormSemestre):
...
@@ -138,17 +143,39 @@ def is_primo_etud(etud: dict, formsemestre: FormSemestre):
debut_cur_iso
=
formsemestre
.
date_debut
.
isoformat
()
debut_cur_iso
=
formsemestre
.
date_debut
.
isoformat
()
# si semestre impair et sem. précédent contigu, recule date debut
# si semestre impair et sem. précédent contigu, recule date debut
if
(
if
(
(
len
(
e
tud
[
"
sems
"
])
>
1
)
(
len
(
e
_dict
[
"
sems
"
])
>
1
)
and
(
formsemestre
.
semestre_id
%
2
==
0
)
and
(
formsemestre
.
semestre_id
%
2
==
0
)
and
(
e
tud
[
"
sems
"
][
1
][
"
semestre_id
"
]
==
(
formsemestre
.
semestre_id
-
1
))
and
(
e
_dict
[
"
sems
"
][
1
][
"
semestre_id
"
]
==
(
formsemestre
.
semestre_id
-
1
))
):
):
debut_cur_iso
=
e
tud
[
"
sems
"
][
1
][
"
date_debut_iso
"
]
debut_cur_iso
=
e
_dict
[
"
sems
"
][
1
][
"
date_debut_iso
"
]
for
s
in
e
tud
[
"
sems
"
]:
# le + recent d'abord
for
s
in
e
_dict
[
"
sems
"
]:
# le + recent d'abord
if
s
[
"
date_debut_iso
"
]
<
debut_cur_iso
:
if
s
[
"
date_debut_iso
"
]
<
debut_cur_iso
:
return
False
return
False
return
True
return
True
# Version moderne: instance de Identite
def
is_primo_etud
(
etud
:
Identite
,
formsemestre
:
FormSemestre
):
"""
Determine si etud a été inscrit avant ce semestre.
Regarde la liste des semestres dans lesquels l
'
étudiant est inscrit.
Si semestre pair, considère comme primo-entrants ceux qui étaient
primo dans le précédent (S_{2n-1}).
"""
inscriptions
=
etud
.
inscriptions
()
debut_cur
=
formsemestre
.
date_debut
# si semestre impair et sem. précédent contigu, recule date debut
if
(
(
len
(
inscriptions
)
>
1
)
and
(
formsemestre
.
semestre_id
%
2
==
0
)
and
(
inscriptions
[
1
].
formsemestre
.
semestre_id
==
(
formsemestre
.
semestre_id
-
1
))
):
debut_cur
=
inscriptions
[
1
].
formsemestre
.
date_debut
for
ins
in
inscriptions
:
# le + recent d'abord
if
ins
.
formsemestre
.
date_debut
<
debut_cur
:
return
False
return
True
def
_categories_and_results
(
etuds
,
category
,
result
):
def
_categories_and_results
(
etuds
,
category
,
result
):
categories
=
{}
categories
=
{}
results
=
{}
results
=
{}
...
@@ -486,37 +513,38 @@ def table_suivi_cohorte(
...
@@ -486,37 +513,38 @@ def table_suivi_cohorte(
civilites
=
set
()
civilites
=
set
()
statuts
=
set
()
statuts
=
set
()
for
etudid
in
etudids
:
for
etudid
in
etudids
:
e
tud
=
sco_etud
.
get_etud_info
(
etudid
=
etudid
,
filled
=
True
)[
0
]
e
_dict
=
sco_etud
.
get_etud_info
(
etudid
=
etudid
,
filled
=
True
)[
0
]
e
tud
[
"
annee_admission
"
]
=
e
tud
[
"
annee
"
]
e
_dict
[
"
annee_admission
"
]
=
e
_dict
[
"
annee
"
]
bacspe
=
(
e
tud
[
"
bac
"
]
or
"
?
"
)
+
"
/
"
+
(
e
tud
[
"
specialite
"
]
or
""
)
bacspe
=
(
e
_dict
[
"
bac
"
]
or
"
?
"
)
+
"
/
"
+
(
e
_dict
[
"
specialite
"
]
or
""
)
# sélection sur bac:
# sélection sur bac:
if
(
if
(
(
not
bac
or
(
bac
==
e
tud
[
"
bac
"
]))
(
not
bac
or
(
bac
==
e
_dict
[
"
bac
"
]))
and
(
not
bacspecialite
or
(
bacspecialite
==
bacspe
))
and
(
not
bacspecialite
or
(
bacspecialite
==
bacspe
))
and
(
not
annee_bac
or
(
annee_bac
==
str
(
e
tud
[
"
annee_bac
"
])))
and
(
not
annee_bac
or
(
annee_bac
==
str
(
e
_dict
[
"
annee_bac
"
])))
and
(
and
(
not
annee_admission
or
(
annee_admission
==
str
(
etud
[
"
annee_admission
"
]))
not
annee_admission
or
(
annee_admission
==
str
(
e_dict
[
"
annee_admission
"
]))
)
)
and
(
not
civilite
or
(
civilite
==
e
tud
[
"
civilite
"
]))
and
(
not
civilite
or
(
civilite
==
e
_dict
[
"
civilite
"
]))
and
(
not
statut
or
(
statut
==
e
tud
[
"
statut
"
]))
and
(
not
statut
or
(
statut
==
e
_dict
[
"
statut
"
]))
and
(
not
only_primo
or
is_primo_etud
(
etud
,
formsemestre
))
and
(
not
only_primo
or
_
is_primo_etud
_dict
(
e_dict
,
formsemestre
))
):
):
orig_set
.
add
(
etudid
)
orig_set
.
add
(
etudid
)
# semestres suivants:
# semestres suivants:
for
s
in
e
tud
[
"
sems
"
]:
for
s
in
e
_dict
[
"
sems
"
]:
if
ndb
.
DateDMYtoISO
(
s
[
"
date_debut
"
])
>
ndb
.
DateDMYtoISO
(
if
ndb
.
DateDMYtoISO
(
s
[
"
date_debut
"
])
>
ndb
.
DateDMYtoISO
(
sem
[
"
date_debut
"
]
sem
[
"
date_debut
"
]
):
):
S
[
s
[
"
formsemestre_id
"
]]
=
s
S
[
s
[
"
formsemestre_id
"
]]
=
s
if
e
tud
.
get
(
"
bac
"
,
False
):
if
e
_dict
.
get
(
"
bac
"
,
False
):
bacs
.
add
(
e
tud
[
"
bac
"
])
bacs
.
add
(
e
_dict
[
"
bac
"
])
bacspecialites
.
add
(
bacspe
)
bacspecialites
.
add
(
bacspe
)
annee_bacs
.
add
(
str
(
e
tud
[
"
annee_bac
"
]))
annee_bacs
.
add
(
str
(
e
_dict
[
"
annee_bac
"
]))
if
e
tud
[
"
annee_admission
"
]
is
not
None
:
if
e
_dict
[
"
annee_admission
"
]
is
not
None
:
annee_admissions
.
add
(
str
(
e
tud
[
"
annee_admission
"
]))
annee_admissions
.
add
(
str
(
e
_dict
[
"
annee_admission
"
]))
civilites
.
add
(
e
tud
[
"
civilite
"
])
civilites
.
add
(
e
_dict
[
"
civilite
"
])
if
e
tud
[
"
statut
"
]:
# ne montre pas les statuts non renseignés
if
e
_dict
[
"
statut
"
]:
# ne montre pas les statuts non renseignés
statuts
.
add
(
e
tud
[
"
statut
"
])
statuts
.
add
(
e
_dict
[
"
statut
"
])
sems
=
list
(
S
.
values
())
sems
=
list
(
S
.
values
())
# tri les semestres par date de debut
# tri les semestres par date de debut
for
s
in
sems
:
for
s
in
sems
:
...
@@ -1194,30 +1222,31 @@ def tsp_etud_list(
...
@@ -1194,30 +1222,31 @@ def tsp_etud_list(
civilites
=
set
()
civilites
=
set
()
statuts
=
set
()
statuts
=
set
()
for
etudid
in
etudids
:
for
etudid
in
etudids
:
e
tud
=
sco_etud
.
get_etud_info
(
etudid
=
etudid
,
filled
=
True
)[
0
]
e
_dict
=
sco_etud
.
get_etud_info
(
etudid
=
etudid
,
filled
=
True
)[
0
]
e
tud
[
"
annee_admission
"
]
=
e
tud
[
"
annee
"
]
# plus explicite
e
_dict
[
"
annee_admission
"
]
=
e
_dict
[
"
annee
"
]
# plus explicite
bacspe
=
(
e
tud
[
"
bac
"
]
or
"
?
"
)
+
"
/
"
+
(
e
tud
[
"
specialite
"
]
or
""
)
bacspe
=
(
e
_dict
[
"
bac
"
]
or
"
?
"
)
+
"
/
"
+
(
e
_dict
[
"
specialite
"
]
or
""
)
# sélection sur bac, primo, ...:
# sélection sur bac, primo, ...:
if
(
if
(
(
not
bac
or
(
bac
==
e
tud
[
"
bac
"
]))
(
not
bac
or
(
bac
==
e
_dict
[
"
bac
"
]))
and
(
not
bacspecialite
or
(
bacspecialite
==
bacspe
))
and
(
not
bacspecialite
or
(
bacspecialite
==
bacspe
))
and
(
not
annee_bac
or
(
annee_bac
==
str
(
e
tud
[
"
annee_bac
"
])))
and
(
not
annee_bac
or
(
annee_bac
==
str
(
e
_dict
[
"
annee_bac
"
])))
and
(
and
(
not
annee_admission
or
(
annee_admission
==
str
(
etud
[
"
annee_admission
"
]))
not
annee_admission
or
(
annee_admission
==
str
(
e_dict
[
"
annee_admission
"
]))
)
)
and
(
not
civilite
or
(
civilite
==
e
tud
[
"
civilite
"
]))
and
(
not
civilite
or
(
civilite
==
e
_dict
[
"
civilite
"
]))
and
(
not
statut
or
(
statut
==
e
tud
[
"
statut
"
]))
and
(
not
statut
or
(
statut
==
e
_dict
[
"
statut
"
]))
and
(
not
only_primo
or
is_primo_etud
(
etud
,
formsemestre
))
and
(
not
only_primo
or
_
is_primo_etud
_dict
(
e_dict
,
formsemestre
))
):
):
etuds
.
append
(
e
tud
)
etuds
.
append
(
e
_dict
)
bacs
.
add
(
e
tud
[
"
bac
"
])
bacs
.
add
(
e
_dict
[
"
bac
"
])
bacspecialites
.
add
(
bacspe
)
bacspecialites
.
add
(
bacspe
)
annee_bacs
.
add
(
e
tud
[
"
annee_bac
"
])
annee_bacs
.
add
(
e
_dict
[
"
annee_bac
"
])
annee_admissions
.
add
(
e
tud
[
"
annee_admission
"
])
annee_admissions
.
add
(
e
_dict
[
"
annee_admission
"
])
civilites
.
add
(
e
tud
[
"
civilite
"
])
civilites
.
add
(
e
_dict
[
"
civilite
"
])
if
e
tud
[
"
statut
"
]:
# ne montre pas les statuts non renseignés
if
e
_dict
[
"
statut
"
]:
# ne montre pas les statuts non renseignés
statuts
.
add
(
e
tud
[
"
statut
"
])
statuts
.
add
(
e
_dict
[
"
statut
"
])
return
etuds
,
bacs
,
bacspecialites
,
annee_bacs
,
annee_admissions
,
civilites
,
statuts
return
etuds
,
bacs
,
bacspecialites
,
annee_bacs
,
annee_admissions
,
civilites
,
statuts
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment