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-louis Gomis
SCODOC_R6A06
Commits
d146d5f5
Commit
d146d5f5
authored
3 years ago
by
Emmanuel Viennet
Browse files
Options
Downloads
Patches
Plain Diff
Traitement erreur config bonus + complété bonus Grenoble
parent
3c36acd1
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
README.md
+4
-4
4 additions, 4 deletions
README.md
app/comp/bonus_spo.py
+25
-13
25 additions, 13 deletions
app/comp/bonus_spo.py
app/models/config.py
+5
-3
5 additions, 3 deletions
app/models/config.py
with
34 additions
and
20 deletions
README.md
+
4
−
4
View file @
d146d5f5
...
@@ -18,12 +18,12 @@ Flask, SQLAlchemy, au lien de Python2/Zope dans les versions précédentes).
...
@@ -18,12 +18,12 @@ Flask, SQLAlchemy, au lien de Python2/Zope dans les versions précédentes).
### État actuel (
4 dec
2
1
)
### État actuel (
26 jan
2
2
)
-
9.
0
(master) reproduit l'ensemble des fonctions de ScoDoc 7 (donc pas de BUT), sauf:
-
9.
1
(master) reproduit l'ensemble des fonctions de ScoDoc 7 (donc pas de BUT), sauf:
-
ancien module "Entreprises" (obsolète)
-
ancien module "Entreprises" (obsolète)
et ajoute la gestion du BUT.
-
9.
1
(branche
"PNBUT"
) est la version de développement.
-
9.
2
(branche
refactor_nt
) est la version de développement.
### Lignes de commandes
### Lignes de commandes
...
...
This diff is collapsed.
Click to expand it.
app/comp/bonus_spo.py
+
25
−
13
View file @
d146d5f5
...
@@ -338,7 +338,7 @@ def bonus_iut1grenoble_2017(notes_sport, coefs, infos=None):
...
@@ -338,7 +338,7 @@ def bonus_iut1grenoble_2017(notes_sport, coefs, infos=None):
Calcul ici du bonus sur moyenne générale
Calcul ici du bonus sur moyenne générale
"""
"""
# les coefs sont ignorés
# les coefs sont ignorés
# notes de 0 à 5
# notes de 0 à 5
/20
points
=
sum
([
x
for
x
in
notes_sport
])
points
=
sum
([
x
for
x
in
notes_sport
])
factor
=
(
points
/
4.0
)
/
100.0
factor
=
(
points
/
4.0
)
/
100.0
bonus
=
infos
[
"
moy
"
]
*
factor
bonus
=
infos
[
"
moy
"
]
*
factor
...
@@ -347,7 +347,9 @@ def bonus_iut1grenoble_2017(notes_sport, coefs, infos=None):
...
@@ -347,7 +347,9 @@ def bonus_iut1grenoble_2017(notes_sport, coefs, infos=None):
class
BonusGrenobleIUT1
(
BonusSport
):
class
BonusGrenobleIUT1
(
BonusSport
):
"""
"""
Bonus IUT1 de Grenoble
À compter de sept. 2021:
La note de sport est sur 20, et on calcule une bonification (en %)
La note de sport est sur 20, et on calcule une bonification (en %)
qui va s
'
appliquer à la moyenne de chaque UE du semestre en appliquant
qui va s
'
appliquer à la moyenne de chaque UE du semestre en appliquant
la formule : bonification (en %) = (note-10)*0,5.
la formule : bonification (en %) = (note-10)*0,5.
...
@@ -356,11 +358,16 @@ class BonusGrenobleIUT1(BonusSport):
...
@@ -356,11 +358,16 @@ class BonusGrenobleIUT1(BonusSport):
(Une note de 10 donne donc 0% de bonif ; note de 20 : 5% de bonif)
(Une note de 10 donne donc 0% de bonif ; note de 20 : 5% de bonif)
Avant sept. 2021, la note de sport allait de 0 à 5 points (sur 20).
Chaque point correspondait à 0.25% d
'
augmentation de la moyenne
générale.
Par exemple : note de sport 2/5 : la moyenne générale était augmentée de 0.5%.
"""
"""
name
=
"
bonus_grenoble_
iut1_20
20
"
name
=
"
bonus_
iut1
grenoble_20
17
"
# C'est un bonus "multiplicatif": on l'exprime en additif,
# C'est un bonus "multiplicatif": on l'exprime en additif,
# sur chaque moyenne d'UE m_0
# sur chaque moyenne d'UE m_0
# Augmenter de 5% correspond à multiplier par a=1.05
# m_1 = a . m_0
# m_1 = a . m_0
# m_1 = m_0 + bonus
# m_1 = m_0 + bonus
# bonus = m_0 (a - 1)
# bonus = m_0 (a - 1)
...
@@ -371,16 +378,21 @@ class BonusGrenobleIUT1(BonusSport):
...
@@ -371,16 +378,21 @@ class BonusGrenobleIUT1(BonusSport):
sem_modimpl_moys_inscrits
*
modimpl_coefs_etuds_no_nan
,
axis
=
1
sem_modimpl_moys_inscrits
*
modimpl_coefs_etuds_no_nan
,
axis
=
1
)
/
np
.
sum
(
modimpl_coefs_etuds_no_nan
,
axis
=
1
)
)
/
np
.
sum
(
modimpl_coefs_etuds_no_nan
,
axis
=
1
)
notes
=
np
.
nan_to_num
(
notes
,
copy
=
False
)
notes
=
np
.
nan_to_num
(
notes
,
copy
=
False
)
a
=
(
notes
-
10.0
)
*
0.005
a
[
a
<=
0
]
=
1.0
# note < 10, pas de bonus
if
self
.
formsemestre
.
date_debut
>
datetime
.
date
(
2021
,
7
,
15
):
if
self
.
formsemestre
.
formation
.
is_apc
():
factor
=
(
notes
-
10.0
)
*
0.005
# 5% si note=20
# ne s'applique qu'aux moyennes d'UE
factor
[
factor
<=
0
]
=
0.0
# note < 10, pas de bonus
b
=
self
.
etud_moy_ue
*
(
a
-
1
)
else
:
# anciens semestres
self
.
bonus_ues
=
b
# DataFrame
factor
=
notes
/
400.0
else
:
factor
[
factor
<=
0
]
=
0.0
# facteur 1 si bonus nul
# ne s'applique qu'à la moyenne générale
b
=
self
.
etud_moy_gen
*
(
a
-
1
)
# S'applique qu'aux moyennes d'UE
self
.
bonus_moy_gen
=
b
bonus
=
self
.
etud_moy_ue
*
factor
self
.
bonus_ues
=
bonus
# DataFrame
if
not
self
.
formsemestre
.
formation
.
is_apc
():
# s'applique à la moyenne générale
self
.
bonus_moy_gen
=
bonus
class
BonusVilleAvray
(
BonusSport
):
class
BonusVilleAvray
(
BonusSport
):
...
...
This diff is collapsed.
Click to expand it.
app/models/config.py
+
5
−
3
View file @
d146d5f5
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
"""
Model : site config WORK IN PROGRESS #WIP
"""
Model : site config WORK IN PROGRESS #WIP
"""
"""
from
flask
import
flash
from
app
import
db
,
log
from
app
import
db
,
log
from
app.comp
import
bonus_spo
from
app.comp
import
bonus_spo
from
app.scodoc.sco_exceptions
import
ScoValueError
from
app.scodoc.sco_exceptions
import
ScoValueError
...
@@ -120,7 +121,8 @@ class ScoDocSiteConfig(db.Model):
...
@@ -120,7 +121,8 @@ class ScoDocSiteConfig(db.Model):
"""
returns bonus class with specified name.
"""
returns bonus class with specified name.
If name not specified, return the configured function.
If name not specified, return the configured function.
None if no bonus function configured.
None if no bonus function configured.
Raises ScoValueError if class_name not found in module bonus_sport.
If class_name not found in module bonus_sport, returns None
and flash a warning.
"""
"""
if
class_name
is
None
:
if
class_name
is
None
:
c
=
ScoDocSiteConfig
.
query
.
filter_by
(
name
=
cls
.
BONUS_SPORT
).
first
()
c
=
ScoDocSiteConfig
.
query
.
filter_by
(
name
=
cls
.
BONUS_SPORT
).
first
()
...
@@ -131,9 +133,9 @@ class ScoDocSiteConfig(db.Model):
...
@@ -131,9 +133,9 @@ class ScoDocSiteConfig(db.Model):
return
None
return
None
klass
=
bonus_spo
.
get_bonus_class_dict
().
get
(
class_name
)
klass
=
bonus_spo
.
get_bonus_class_dict
().
get
(
class_name
)
if
klass
is
None
:
if
klass
is
None
:
raise
ScoValueError
(
flash
(
f
"""
Fonction de calcul bonus sport inexistante:
{
class_name
}
.
f
"""
Fonction de calcul bonus sport inexistante:
{
class_name
}
.
(
contacte
r
votre administrateur local
)
.
"""
Changez là ou
contacte
z
votre administrateur local.
"""
)
)
return
klass
return
klass
...
...
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