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
71a15fed
Commit
71a15fed
authored
2 years ago
by
Emmanuel Viennet
Browse files
Options
Downloads
Patches
Plain Diff
Fix: creation groupe default
parent
d3fd1647
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
app/models/groups.py
+3
-2
3 additions, 2 deletions
app/models/groups.py
app/scodoc/sco_formsemestre_exterieurs.py
+30
-25
30 additions, 25 deletions
app/scodoc/sco_formsemestre_exterieurs.py
app/scodoc/sco_groups.py
+4
-2
4 additions, 2 deletions
app/scodoc/sco_groups.py
with
37 additions
and
29 deletions
app/models/groups.py
+
3
−
2
View file @
71a15fed
...
@@ -138,14 +138,15 @@ class GroupDescr(db.Model):
...
@@ -138,14 +138,15 @@ class GroupDescr(db.Model):
@classmethod
@classmethod
def
check_name
(
def
check_name
(
cls
,
partition
:
"
Partition
"
,
group_name
:
str
,
existing
=
False
cls
,
partition
:
"
Partition
"
,
group_name
:
str
,
existing
=
False
,
default
=
False
)
->
bool
:
)
->
bool
:
"""
check if a group named
'
group_name
'
can be created in the given partition.
"""
check if a group named
'
group_name
'
can be created in the given partition.
If existing is True, allow a group_name already existing in the partition.
If existing is True, allow a group_name already existing in the partition.
If default, name must be empty and default group must not yet exists.
"""
"""
if
not
isinstance
(
group_name
,
str
):
if
not
isinstance
(
group_name
,
str
):
return
False
return
False
if
not
len
(
group_name
.
strip
())
>
0
:
if
not
default
and
not
len
(
group_name
.
strip
())
>
0
:
return
False
return
False
if
(
not
existing
)
and
(
group_name
in
[
g
.
group_name
for
g
in
partition
.
groups
]):
if
(
not
existing
)
and
(
group_name
in
[
g
.
group_name
for
g
in
partition
.
groups
]):
return
False
return
False
...
...
This diff is collapsed.
Click to expand it.
app/scodoc/sco_formsemestre_exterieurs.py
+
30
−
25
View file @
71a15fed
...
@@ -83,32 +83,33 @@ def formsemestre_ext_create(etudid, sem_params):
...
@@ -83,32 +83,33 @@ def formsemestre_ext_create(etudid, sem_params):
def
formsemestre_ext_create_form
(
etudid
,
formsemestre_id
):
def
formsemestre_ext_create_form
(
etudid
,
formsemestre_id
):
"""
Formulaire cr
e
ation/inscription à un semestre extérieur
"""
"""
Formulaire cr
é
ation/inscription à un semestre extérieur
"""
etud
=
sco_etud
.
get_etud_info
(
etudid
=
etudid
,
filled
=
True
)[
0
]
etud
=
sco_etud
.
get_etud_info
(
etudid
=
etudid
,
filled
=
True
)[
0
]
H
=
[
H
=
[
html_sco_header
.
sco_header
(),
html_sco_header
.
sco_header
(),
"""
<h2>Enregistrement d
'
une inscription antérieure dans un autre établissement</h2>
f
"""
<h2>Enregistrement d
'
une inscription antérieure dans un autre
établissement</h2>
<p class=
"
help
"
>
<p class=
"
help
"
>
Cette opération créé un semestre extérieur (
"
ancien
"
) et y inscrit juste cet étudiant.
Cette opération crée un semestre extérieur (
"
ancien
"
) et y inscrit
juste cet étudiant.
La décision de jury peut ensuite y être saisie.
La décision de jury peut ensuite y être saisie.
</p>
</p>
<p class=
"
help
"
>
<p class=
"
help
"
>
Notez que si un semestre extérieur similaire a déjà été créé pour un autre étudiant,
Notez que si un semestre extérieur similaire a déjà été créé pour un autre
il est préférable d
'
utiliser la fonction
étudiant, il est préférable d
'
utiliser la fonction
"
<a href=
"
formsemestre_inscription_with_modules_form?etudid=%s&only_ext=1
"
>
"
<a href=
"
{
url_for
(
'
notes.formsemestre_inscription_with_modules_form
'
,
scodoc_dept
=
g
.
scodoc_dept
,
etudid
=
etudid
,
only_ext
=
1
)
}
"
>
inscrire à un autre semestre</a>
"
inscrire à un autre semestre</a>
"
</p>
</p>
"""
<h3><a href=
"
{
url_for
(
'
scolar.ficheEtud
'
,
%
(
etudid
,),
scodoc_dept
=
g
.
scodoc_dept
,
etudid
=
etudid
)
"""
<h3><a href=
"
%s
"
class=
"
stdlink
"
>Etudiant %s</a></h3>
"""
}
"
class=
"
stdlink
"
>Étudiant
{
etud
[
"
nomprenom
"
]
}
</a></h3>
%
(
"""
,
url_for
(
"
scolar.ficheEtud
"
,
scodoc_dept
=
g
.
scodoc_dept
,
etudid
=
etudid
),
etud
[
"
nomprenom
"
],
),
]
]
F
=
html_sco_header
.
sco_footer
()
F
=
html_sco_header
.
sco_footer
()
orig_sem
=
sco_formsemestre
.
get_formsemestre
(
formsemestre_id
)
orig_sem
=
sco_formsemestre
.
get_formsemestre
(
formsemestre_id
)
# Ne propose que des semestres de semestre_id strictement inférieur au semestre courant
# Ne propose que des semestres de semestre_id strictement inférieur
# au semestre courant
# et seulement si pas inscrit au même semestre_id d'un semestre ordinaire ScoDoc.
# et seulement si pas inscrit au même semestre_id d'un semestre ordinaire ScoDoc.
# Les autres situations (eg redoublements en changeant d'établissement)
# Les autres situations (eg redoublements en changeant d'établissement)
# doivent être gérées par les validations de semestres "antérieurs"
# doivent être gérées par les validations de semestres "antérieurs"
...
@@ -116,15 +117,15 @@ def formsemestre_ext_create_form(etudid, formsemestre_id):
...
@@ -116,15 +117,15 @@ def formsemestre_ext_create_form(etudid, formsemestre_id):
args
=
{
"
etudid
"
:
etudid
,
"
etat
"
:
"
I
"
}
args
=
{
"
etudid
"
:
etudid
,
"
etat
"
:
"
I
"
}
)
)
semlist
=
[
sco_formsemestre
.
get_formsemestre
(
i
[
"
formsemestre_id
"
])
for
i
in
insem
]
semlist
=
[
sco_formsemestre
.
get_formsemestre
(
i
[
"
formsemestre_id
"
])
for
i
in
insem
]
existing_semestre_ids
=
set
([
s
[
"
semestre_id
"
]
for
s
in
semlist
])
existing_semestre_ids
=
{
s
[
"
semestre_id
"
]
for
s
in
semlist
}
min_semestre_id
=
1
min_semestre_id
=
1
max_semestre_id
=
orig_sem
[
"
semestre_id
"
]
max_semestre_id
=
orig_sem
[
"
semestre_id
"
]
semestre_ids
=
set
(
range
(
min_semestre_id
,
max_semestre_id
))
-
existing_semestre_ids
semestre_ids
=
set
(
range
(
min_semestre_id
,
max_semestre_id
))
-
existing_semestre_ids
H
.
append
(
H
.
append
(
"""
<p>L
'
étudiant est déjà inscrit dans des semestres ScoDoc de rangs:
f
"""
<p>L
'
étudiant est déjà inscrit dans des semestres ScoDoc de rangs:
%s
{
sorted
(
list
(
existing_semestre_ids
))
}
</p>
"""
</p>
%
sorted
(
list
(
existing_semestre_ids
))
"""
)
)
if
not
semestre_ids
:
if
not
semestre_ids
:
H
.
append
(
"""
<p class=
"
warning
"
>pas de semestres extérieurs possibles</p>
"""
)
H
.
append
(
"""
<p class=
"
warning
"
>pas de semestres extérieurs possibles</p>
"""
)
...
@@ -195,15 +196,19 @@ def formsemestre_ext_create_form(etudid, formsemestre_id):
...
@@ -195,15 +196,19 @@ def formsemestre_ext_create_form(etudid, formsemestre_id):
)
)
if
tf
[
0
]
==
0
:
if
tf
[
0
]
==
0
:
H
.
append
(
H
.
append
(
"""
<p>Ce formulaire sert à enregistrer un semestre antérieur dans
la formation
"""
<p>Ce formulaire sert à enregistrer un semestre antérieur dans
effectué dans un autre établissement.
la formation
effectué dans un autre établissement.
</p>
"""
</p>
"""
)
)
return
"
\n
"
.
join
(
H
)
+
"
\n
"
+
tf
[
1
]
+
F
return
"
\n
"
.
join
(
H
)
+
"
\n
"
+
tf
[
1
]
+
F
elif
tf
[
0
]
==
-
1
:
elif
tf
[
0
]
==
-
1
:
return
flask
.
redirect
(
return
flask
.
redirect
(
"
%s/formsemestre_bulletinetud?formsemestre_id==%s&etudid=%s
"
url_for
(
%
(
scu
.
ScoURL
(),
formsemestre_id
,
etudid
)
"
notes.formsemestre_bulletinetud
"
,
scodoc_dept
=
g
.
scodoc_dept
,
formsemestre_id
=
formsemestre_id
,
etudid
=
etudid
,
)
)
)
else
:
else
:
tf
[
2
][
"
formation_id
"
]
=
orig_sem
[
"
formation_id
"
]
tf
[
2
][
"
formation_id
"
]
=
orig_sem
[
"
formation_id
"
]
...
...
This diff is collapsed.
Click to expand it.
app/scodoc/sco_groups.py
+
4
−
2
View file @
71a15fed
...
@@ -831,7 +831,9 @@ def setGroups(
...
@@ -831,7 +831,9 @@ def setGroups(
def
create_group
(
partition_id
,
group_name
=
""
,
default
=
False
)
->
GroupDescr
:
def
create_group
(
partition_id
,
group_name
=
""
,
default
=
False
)
->
GroupDescr
:
"""
Create a new group in this partition
"""
"""
Create a new group in this partition.
If default, create default partition (with no name)
"""
partition
=
Partition
.
query
.
get_or_404
(
partition_id
)
partition
=
Partition
.
query
.
get_or_404
(
partition_id
)
if
not
sco_permissions_check
.
can_change_groups
(
partition
.
formsemestre_id
):
if
not
sco_permissions_check
.
can_change_groups
(
partition
.
formsemestre_id
):
raise
AccessDenied
(
"
Vous n
'
avez pas le droit d
'
effectuer cette opération !
"
)
raise
AccessDenied
(
"
Vous n
'
avez pas le droit d
'
effectuer cette opération !
"
)
...
@@ -841,7 +843,7 @@ def create_group(partition_id, group_name="", default=False) -> GroupDescr:
...
@@ -841,7 +843,7 @@ def create_group(partition_id, group_name="", default=False) -> GroupDescr:
if
not
group_name
and
not
default
:
if
not
group_name
and
not
default
:
raise
ValueError
(
"
invalid group name: ()
"
)
raise
ValueError
(
"
invalid group name: ()
"
)
if
not
GroupDescr
.
check_name
(
partition
,
group_name
):
if
not
GroupDescr
.
check_name
(
partition
,
group_name
,
default
=
default
):
raise
ScoValueError
(
f
"
Le groupe
{
group_name
}
existe déjà dans cette partition
"
)
raise
ScoValueError
(
f
"
Le groupe
{
group_name
}
existe déjà dans cette partition
"
)
numeros
=
[
g
.
numero
if
g
.
numero
is
not
None
else
0
for
g
in
partition
.
groups
]
numeros
=
[
g
.
numero
if
g
.
numero
is
not
None
else
0
for
g
in
partition
.
groups
]
...
...
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