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
Paul Milleville
SCODOC_R6A06
Commits
cc4fd761
Commit
cc4fd761
authored
3 years ago
by
Emmanuel Viennet
Browse files
Options
Downloads
Patches
Plain Diff
Tableau recap. codes jury BUT
parent
d776bdca
Branches
master
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
app/but/jury_but_recap.py
+48
-10
48 additions, 10 deletions
app/but/jury_but_recap.py
app/static/js/table_recap.js
+16
-5
16 additions, 5 deletions
app/static/js/table_recap.js
app/views/notes.py
+17
-0
17 additions, 0 deletions
app/views/notes.py
with
81 additions
and
15 deletions
app/but/jury_but_recap.py
+
48
−
10
View file @
cc4fd761
...
@@ -34,12 +34,17 @@ from app.scodoc.sco_exceptions import ScoValueError
...
@@ -34,12 +34,17 @@ from app.scodoc.sco_exceptions import ScoValueError
def
formsemestre_saisie_jury_but
(
def
formsemestre_saisie_jury_but
(
formsemestre2
:
FormSemestre
,
readonly
:
bool
=
False
,
selected_etudid
:
int
=
None
formsemestre2
:
FormSemestre
,
readonly
:
bool
=
False
,
selected_etudid
:
int
=
None
,
mode
=
"
jury
"
,
)
->
str
:
)
->
str
:
"""
formsemestre est un semestre PAIR
"""
formsemestre est un semestre PAIR
Si readonly, ne montre pas le lien
"
saisir la décision
"
Si readonly, ne montre pas le lien
"
saisir la décision
"
=> page html complète
=> page html complète
Si mode ==
"
recap
"
, table recap des codes, sans liens de saisie.
"""
"""
# Quick & Dirty
# Quick & Dirty
# pour chaque etud de res2 trié
# pour chaque etud de res2 trié
...
@@ -55,7 +60,9 @@ def formsemestre_saisie_jury_but(
...
@@ -55,7 +60,9 @@ def formsemestre_saisie_jury_but(
if
formsemestre2
.
semestre_id
%
2
!=
0
:
if
formsemestre2
.
semestre_id
%
2
!=
0
:
raise
ScoValueError
(
"
Cette page ne fonctionne que sur les semestres pairs
"
)
raise
ScoValueError
(
"
Cette page ne fonctionne que sur les semestres pairs
"
)
rows
,
titles
,
column_ids
=
get_table_jury_but
(
formsemestre2
,
readonly
=
readonly
)
rows
,
titles
,
column_ids
=
get_table_jury_but
(
formsemestre2
,
readonly
=
readonly
,
mode
=
mode
)
if
not
rows
:
if
not
rows
:
return
(
return
(
'
<div class=
"
table_recap
"
><div class=
"
message
"
>aucun étudiant !</div></div>
'
'
<div class=
"
table_recap
"
><div class=
"
message
"
>aucun étudiant !</div></div>
'
...
@@ -63,8 +70,9 @@ def formsemestre_saisie_jury_but(
...
@@ -63,8 +70,9 @@ def formsemestre_saisie_jury_but(
filename
=
scu
.
sanitize_filename
(
filename
=
scu
.
sanitize_filename
(
f
"""
jury-but-
{
formsemestre2
.
titre_num
()
}
-
{
time
.
strftime
(
"
%Y-%m-%d
"
)
}
"""
f
"""
jury-but-
{
formsemestre2
.
titre_num
()
}
-
{
time
.
strftime
(
"
%Y-%m-%d
"
)
}
"""
)
)
klass
=
"
table_jury_but_bilan
"
if
mode
==
"
recap
"
else
""
table_html
=
build_table_jury_but_html
(
table_html
=
build_table_jury_but_html
(
filename
,
rows
,
titles
,
column_ids
,
selected_etudid
=
selected_etudid
filename
,
rows
,
titles
,
column_ids
,
selected_etudid
=
selected_etudid
,
klass
=
klass
)
)
H
=
[
H
=
[
html_sco_header
.
sco_header
(
html_sco_header
.
sco_header
(
...
@@ -77,16 +85,45 @@ def formsemestre_saisie_jury_but(
...
@@ -77,16 +85,45 @@ def formsemestre_saisie_jury_but(
formsemestre_id
=
formsemestre2
.
id
formsemestre_id
=
formsemestre2
.
id
),
),
]
]
if
mode
==
"
recap
"
:
H
.
append
(
"""
<h3>Décisions de jury enregistrées pour les étudiants de ce semestre</h3>
"""
)
H
.
append
(
H
.
append
(
f
"""
f
"""
{
table_html
}
{
table_html
}
<div class=
"
table_jury_but_links
"
>
<div class=
"
table_jury_but_links
"
>
<p><a class=
"
sdtlink
"
href=
"
{
url_for
(
"""
)
if
(
mode
==
"
recap
"
)
and
not
readonly
:
H
.
append
(
f
"""
<p><a class=
"
stdlink
"
href=
"
{
url_for
(
"
notes.formsemestre_saisie_jury
"
,
scodoc_dept
=
g
.
scodoc_dept
,
formsemestre_id
=
formsemestre2
.
id
)
}
"
>Saisie des décisions du jury</a>
</p>
"""
)
else
:
H
.
append
(
f
"""
<p><a class=
"
stdlink
"
href=
"
{
url_for
(
"
notes.formsemestre_validation_auto_but
"
,
"
notes.formsemestre_validation_auto_but
"
,
scodoc_dept
=
g
.
scodoc_dept
,
formsemestre_id
=
formsemestre2
.
id
)
scodoc_dept
=
g
.
scodoc_dept
,
formsemestre_id
=
formsemestre2
.
id
)
}
"
>Calcul automatique des décisions du jury</a></p>
}
"
>Calcul automatique des décisions du jury</a>
</p>
<p><a class=
"
stdlink
"
href=
"
{
url_for
(
"
notes.formsemestre_jury_but_recap
"
,
scodoc_dept
=
g
.
scodoc_dept
,
formsemestre_id
=
formsemestre2
.
id
)
}
"
>Tableau récapitulatif des décisions du jury</a>
</p>
"""
)
H
.
append
(
f
"""
</div>
</div>
{
html_sco_header
.
sco_footer
()
}
{
html_sco_header
.
sco_footer
()
}
...
@@ -96,12 +133,12 @@ def formsemestre_saisie_jury_but(
...
@@ -96,12 +133,12 @@ def formsemestre_saisie_jury_but(
def
build_table_jury_but_html
(
def
build_table_jury_but_html
(
filename
:
str
,
rows
,
titles
,
column_ids
,
selected_etudid
:
int
=
None
filename
:
str
,
rows
,
titles
,
column_ids
,
selected_etudid
:
int
=
None
,
klass
=
""
)
->
str
:
)
->
str
:
"""
assemble la table html
"""
"""
assemble la table html
"""
footer_rows
=
[]
# inutil
e
pour l'instant
, à voir XXX
footer_rows
=
[]
# inutil
isé
pour l'instant
H
=
[
H
=
[
f
"""
<div class=
"
table_recap
"
><table class=
"
table_recap apc jury table_jury_but
"
f
"""
<div class=
"
table_recap
"
><table class=
"
table_recap apc jury table_jury_but
{
klass
}
"
data-filename=
"
{
filename
}
"
>
"""
data-filename=
"
{
filename
}
"
>
"""
]
]
# header
# header
...
@@ -274,7 +311,7 @@ class RowCollector:
...
@@ -274,7 +311,7 @@ class RowCollector:
def
get_table_jury_but
(
def
get_table_jury_but
(
formsemestre2
:
FormSemestre
,
readonly
:
bool
=
False
formsemestre2
:
FormSemestre
,
readonly
:
bool
=
False
,
mode
=
"
jury
"
)
->
tuple
[
list
[
dict
],
list
[
str
],
list
[
str
]]:
)
->
tuple
[
list
[
dict
],
list
[
str
],
list
[
str
]]:
"""
Construit la table des résultats annuels pour le jury BUT
"""
"""
Construit la table des résultats annuels pour le jury BUT
"""
res2
:
ResultatsSemestreBUT
=
res_sem
.
load_formsemestre_results
(
formsemestre2
)
res2
:
ResultatsSemestreBUT
=
res_sem
.
load_formsemestre_results
(
formsemestre2
)
...
@@ -302,7 +339,7 @@ def get_table_jury_but(
...
@@ -302,7 +339,7 @@ def get_table_jury_but(
"
col_code_annee
"
,
"
col_code_annee
"
,
)
)
# --- Le lien de saisie
# --- Le lien de saisie
if
not
readonly
:
if
not
readonly
and
not
mode
==
"
recap
"
:
row
.
add_cell
(
row
.
add_cell
(
"
lien_saisie
"
,
"
lien_saisie
"
,
""
,
""
,
...
@@ -316,6 +353,7 @@ def get_table_jury_but(
...
@@ -316,6 +353,7 @@ def get_table_jury_but(
{
"
modif.
"
if
deca
.
code_valide
else
"
saisie
"
}
{
"
modif.
"
if
deca
.
code_valide
else
"
saisie
"
}
décision</a>
décision</a>
"""
,
"""
,
"
col_lien_saisie_but
"
,
)
)
rows
.
append
(
row
.
row
)
rows
.
append
(
row
.
row
)
if
len
(
rows
)
>
0
:
if
len
(
rows
)
>
0
:
...
...
This diff is collapsed.
Click to expand it.
app/static/js/table_recap.js
+
16
−
5
View file @
cc4fd761
// Tableau recap notes
// Tableau recap notes
$
(
function
()
{
$
(
function
()
{
$
(
function
()
{
$
(
function
()
{
let
hidden_colums
=
[
"
codes
"
,
"
identite_detail
"
,
"
partition_aux
"
,
"
partition_rangs
"
,
"
admission
"
,
"
col_empty
"
];
let
mode_jury_but_bilan
=
$
(
'
table.table_recap
'
).
hasClass
(
"
table_jury_but_bilan
"
);
if
(
mode_jury_but_bilan
)
{
// table bilan décisions: cache les notes
hidden_colums
=
hidden_colums
.
concat
([
"
col_ue
"
,
"
col_rcue
"
,
"
col_lien_saisie_but
"
]);
}
else
{
hidden_colums
=
hidden_colums
.
concat
([
"
recorded_code
"
]);
}
// Les boutons dépendent du mode BUT ou classique:
// Les boutons dépendent du mode BUT ou classique:
let
buttons
=
[
let
buttons
=
[
{
{
...
@@ -125,7 +133,7 @@ $(function () {
...
@@ -125,7 +133,7 @@ $(function () {
"
columnDefs
"
:
[
"
columnDefs
"
:
[
{
{
// cache les codes, le détail de l'identité, les groupes, les colonnes admission et les vides
// cache les codes, le détail de l'identité, les groupes, les colonnes admission et les vides
targets
:
[
"
codes
"
,
"
identite_detail
"
,
"
partition_aux
"
,
"
partition_rangs
"
,
"
admission
"
,
"
col_empty
"
,
"
recorded_code
"
]
,
targets
:
hidden_colums
,
visible
:
false
,
visible
:
false
,
},
},
{
{
...
@@ -175,10 +183,13 @@ $(function () {
...
@@ -175,10 +183,13 @@ $(function () {
$
(
this
).
addClass
(
'
selected
'
);
$
(
this
).
addClass
(
'
selected
'
);
}
}
});
});
// Pour montrer et
highliht
er l'étudiant sélectionné:
// Pour montrer et
surlign
er l'étudiant sélectionné:
$
(
function
()
{
$
(
function
()
{
document
.
querySelector
(
"
#row_selected
"
).
scrollIntoView
();
let
row_selected
=
document
.
querySelector
(
"
#row_selected
"
);
if
(
row_selected
)
{
row_selected
.
scrollIntoView
();
window
.
scrollBy
(
0
,
-
50
);
window
.
scrollBy
(
0
,
-
50
);
document
.
querySelector
(
"
#row_selected
"
).
classList
.
add
(
"
selected
"
);
row_selected
.
classList
.
add
(
"
selected
"
);
}
});
});
});
});
This diff is collapsed.
Click to expand it.
app/views/notes.py
+
17
−
0
View file @
cc4fd761
...
@@ -2613,6 +2613,23 @@ def formsemestre_saisie_jury(formsemestre_id: int, selected_etudid: int = None):
...
@@ -2613,6 +2613,23 @@ def formsemestre_saisie_jury(formsemestre_id: int, selected_etudid: int = None):
)
)
@bp.route
(
"
/formsemestre_jury_but_recap
"
)
@scodoc
@permission_required
(
Permission
.
ScoView
)
@scodoc7func
def
formsemestre_jury_but_recap
(
formsemestre_id
:
int
,
selected_etudid
:
int
=
None
):
"""
Tableau affichage des codes
"""
readonly
=
not
sco_permissions_check
.
can_validate_sem
(
formsemestre_id
)
formsemestre
=
FormSemestre
.
query
.
get_or_404
(
formsemestre_id
)
if
not
(
formsemestre
.
formation
.
is_apc
()
and
formsemestre
.
semestre_id
%
2
==
0
):
raise
ScoValueError
(
"
formsemestre_jury_but_recap: réservé aux semestres pairs de BUT
"
)
return
jury_but_recap
.
formsemestre_saisie_jury_but
(
formsemestre
,
readonly
=
readonly
,
selected_etudid
=
selected_etudid
,
mode
=
"
recap
"
)
sco_publish
(
sco_publish
(
"
/formsemestre_lettres_individuelles
"
,
"
/formsemestre_lettres_individuelles
"
,
sco_pvjury
.
formsemestre_lettres_individuelles
,
sco_pvjury
.
formsemestre_lettres_individuelles
,
...
...
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