forked from ScoDoc/ScoDoc
pylint corrections (suite)
This commit is contained in:
parent
b03eee12a1
commit
6e7a104fb0
@ -70,11 +70,31 @@ import sco_version
|
||||
COORD = "Coordonnées"
|
||||
SEQ = "Continue"
|
||||
|
||||
TOUS = "Tous"
|
||||
|
||||
|
||||
def _get_group_info(evaluation_id):
|
||||
# groupes
|
||||
groups = sco_groups.do_evaluation_listegroupes(
|
||||
evaluation_id, include_default=True
|
||||
)
|
||||
has_groups = False
|
||||
groups_tree = {}
|
||||
for group in groups:
|
||||
partition = group["partition_name"] or TOUS
|
||||
group_id = group["group_id"]
|
||||
group_name = group["group_name"] or TOUS
|
||||
if partition not in groups_tree:
|
||||
groups_tree[partition] = {}
|
||||
groups_tree[partition][group_name] = group_id
|
||||
if partition != TOUS:
|
||||
has_groups = True
|
||||
nb_groups = len(groups_tree)
|
||||
return groups_tree, has_groups, nb_groups
|
||||
|
||||
class PlacementForm(FlaskForm):
|
||||
"""Formulaire pour placement des étudiants en Salle"""
|
||||
|
||||
TOUS = "Tous"
|
||||
evaluation_id = HiddenField("evaluation_id")
|
||||
file_format = RadioField(
|
||||
"Format de fichier",
|
||||
@ -104,27 +124,20 @@ class PlacementForm(FlaskForm):
|
||||
)
|
||||
submit = SubmitField("OK")
|
||||
|
||||
def __init__(self, formdata=None, data=None):
|
||||
super().__init__(formdata=formdata, data=data)
|
||||
self.groups_tree = {}
|
||||
self.has_groups = None
|
||||
self.group_tree_length = None
|
||||
self.nb_groups = None
|
||||
self.set_evaluation_infos(data["evaluation_id"])
|
||||
|
||||
def set_evaluation_infos(self, evaluation_id):
|
||||
"""Initialise les données du formulaire avec les données de l'évaluation."""
|
||||
eval_data = sco_evaluations.do_evaluation_list({"evaluation_id": evaluation_id})
|
||||
if not eval_data:
|
||||
raise ScoValueError("invalid evaluation_id")
|
||||
# groupes
|
||||
groups = sco_groups.do_evaluation_listegroupes(
|
||||
evaluation_id, include_default=True
|
||||
)
|
||||
self.groups_tree = {}
|
||||
self.has_groups = False
|
||||
for group in groups:
|
||||
partition = group["partition_name"] or self.TOUS
|
||||
group_id = group["group_id"]
|
||||
group_name = group["group_name"] or self.TOUS
|
||||
if partition not in self.groups_tree:
|
||||
self.groups_tree[partition] = {}
|
||||
self.groups_tree[partition][group_name] = group_id
|
||||
if partition != self.TOUS:
|
||||
self.has_groups = True
|
||||
self.groups_tree_length = len(self.groups_tree)
|
||||
self.groups_tree, self.has_groups, self.nb_groups = _get_group_info(evaluation_id)
|
||||
if self.has_groups:
|
||||
choices = []
|
||||
for partition in self.groups_tree:
|
||||
@ -141,6 +154,7 @@ class _DistributeurContinu:
|
||||
self.position = 1
|
||||
|
||||
def suivant(self):
|
||||
"""Retounre la désignation de la place suivante"""
|
||||
retour = self.position
|
||||
self.position += 1
|
||||
return retour
|
||||
@ -155,6 +169,7 @@ class _Distributeur2D:
|
||||
self.index = 1
|
||||
|
||||
def suivant(self):
|
||||
"""Retounre la désignation de la place suivante"""
|
||||
retour = (self.index, self.rang)
|
||||
self.rang += 1
|
||||
if self.rang > self.nb_rangs:
|
||||
@ -167,9 +182,8 @@ def placement_eval_selectetuds(evaluation_id):
|
||||
"""Creation de l'écran de placement"""
|
||||
form = PlacementForm(
|
||||
request.form,
|
||||
data={"evaluation_id": int(evaluation_id), "groups": PlacementForm.TOUS},
|
||||
data={"evaluation_id": int(evaluation_id), "groups": TOUS},
|
||||
)
|
||||
form.set_evaluation_infos(evaluation_id)
|
||||
if form.validate_on_submit():
|
||||
runner = PlacementRunner(form)
|
||||
if not runner.check_placement():
|
||||
@ -195,6 +209,7 @@ def placement_eval_selectetuds(evaluation_id):
|
||||
|
||||
class PlacementRunner:
|
||||
"""Execution de l'action définie par le formulaire"""
|
||||
|
||||
def __init__(self, form):
|
||||
"""Calcul et génération du fichier sur la base des données du formulaire"""
|
||||
self.evaluation_id = form["evaluation_id"].data
|
||||
@ -239,6 +254,9 @@ class PlacementRunner:
|
||||
"Controle : %s (coef. %g)"
|
||||
% (self.evaltitre, self.eval_data["coefficient"]),
|
||||
]
|
||||
self.styles = None
|
||||
self.plan = None
|
||||
self.listetud = None
|
||||
|
||||
def check_placement(self):
|
||||
"""Vérifie que l'utilisateur courant a le droit d'édition sur les notes"""
|
||||
@ -248,6 +266,7 @@ class PlacementRunner:
|
||||
)
|
||||
|
||||
def exec_placement(self):
|
||||
"""Excéute l'action liée au formulaire"""
|
||||
self._repartition()
|
||||
if self.file_format == "xls":
|
||||
return self._production_xls()
|
||||
@ -263,14 +282,11 @@ class PlacementRunner:
|
||||
self.plan = self._affectation_places()
|
||||
|
||||
def _build_listetud(self):
|
||||
if None in [g["group_name"] for g in self.groups]: # tous les etudiants
|
||||
getallstudents = True
|
||||
else:
|
||||
getallstudents = False
|
||||
get_all_students = None in [g["group_name"] for g in self.groups] # tous les etudiants
|
||||
etudids = sco_groups.do_evaluation_listeetuds_groups(
|
||||
self.evaluation_id,
|
||||
self.groups,
|
||||
getallstudents=getallstudents,
|
||||
getallstudents=get_all_students,
|
||||
include_dems=True,
|
||||
)
|
||||
listetud = [] # liste de couples (nom,prenom)
|
||||
@ -359,24 +375,24 @@ class PlacementRunner:
|
||||
)
|
||||
return tab.make_page(format="pdf", with_html_headers=False)
|
||||
|
||||
def _one_header(self, ws):
|
||||
def _one_header(self, worksheet):
|
||||
cells = [
|
||||
ws.make_cell("Nom", self.styles["2bi"]),
|
||||
ws.make_cell("Prénom", self.styles["2bi"]),
|
||||
worksheet.make_cell("Nom", self.styles["2bi"]),
|
||||
worksheet.make_cell("Prénom", self.styles["2bi"]),
|
||||
]
|
||||
if self.etiquetage == COORD:
|
||||
cells.append(ws.make_cell("Colonne", self.styles["2bi"]))
|
||||
cells.append(ws.make_cell("Ligne", self.styles["2bi"]))
|
||||
cells.append(worksheet.make_cell("Colonne", self.styles["2bi"]))
|
||||
cells.append(worksheet.make_cell("Ligne", self.styles["2bi"]))
|
||||
else:
|
||||
cells.append(ws.make_cell("Place", self.styles["2bi"]))
|
||||
cells.append(worksheet.make_cell("Place", self.styles["2bi"]))
|
||||
return cells
|
||||
|
||||
def _headers(self, ws, nb_listes):
|
||||
def _headers(self, worksheet, nb_listes):
|
||||
cells = []
|
||||
for _ in range(nb_listes):
|
||||
cells += self._one_header(ws)
|
||||
cells.append(ws.make_cell(""))
|
||||
ws.append_row(cells)
|
||||
cells += self._one_header(worksheet)
|
||||
cells.append(worksheet.make_cell(""))
|
||||
worksheet.append_row(cells)
|
||||
|
||||
def _make_styles(self, ws0, ws1):
|
||||
# polices
|
||||
@ -515,7 +531,7 @@ class PlacementRunner:
|
||||
ws0.append_row(cells_c)
|
||||
ws0.set_row_dimension_height(row, space / 25)
|
||||
|
||||
def _feuille1(self, ws, maxlines):
|
||||
def _feuille1(self, worksheet, maxlines):
|
||||
# etudiants - feuille1
|
||||
# structuration:
|
||||
# 1 page = maxlistes listes
|
||||
@ -529,13 +545,13 @@ class PlacementRunner:
|
||||
widths = []
|
||||
for _ in range(maxlistes):
|
||||
widths += gabarit
|
||||
ws.set_column_dimension_width(value=widths)
|
||||
worksheet.set_column_dimension_width(value=widths)
|
||||
nb_etu_restant = len(self.listetud)
|
||||
self._titres(ws)
|
||||
self._titres(worksheet)
|
||||
nb_listes = min(
|
||||
maxlistes, nb_etu_restant // maxlines + 1
|
||||
) # nombre de colonnes dans la page
|
||||
self._headers(ws, nb_listes)
|
||||
self._headers(worksheet, nb_listes)
|
||||
# construction liste alphabétique
|
||||
# Affichage
|
||||
lines = [[] for _ in range(maxlines)]
|
||||
@ -544,31 +560,33 @@ class PlacementRunner:
|
||||
for etud in sorted(self.plan, key=lambda e: e[0][0]): # tri alphabétique
|
||||
# check for skip of list or page
|
||||
if col > 0: # add a empty cell between lists
|
||||
lines[lineno].append(ws.make_cell())
|
||||
lines[lineno].append(ws.make_cell(etud[0][0], self.styles["2l"]))
|
||||
lines[lineno].append(ws.make_cell(etud[0][1], self.styles["2m1"]))
|
||||
lines[lineno].append(worksheet.make_cell())
|
||||
lines[lineno].append(worksheet.make_cell(etud[0][0], self.styles["2l"]))
|
||||
lines[lineno].append(worksheet.make_cell(etud[0][1], self.styles["2m1"]))
|
||||
if self.etiquetage == COORD:
|
||||
lines[lineno].append(ws.make_cell(etud[1][1], self.styles["2m2"]))
|
||||
lines[lineno].append(ws.make_cell(etud[1][0], self.styles["2r"]))
|
||||
lines[lineno].append(
|
||||
worksheet.make_cell(etud[1][1], self.styles["2m2"])
|
||||
)
|
||||
lines[lineno].append(worksheet.make_cell(etud[1][0], self.styles["2r"]))
|
||||
else:
|
||||
lines[lineno].append(ws.make_cell(etud[1], self.styles["2r"]))
|
||||
lines[lineno].append(worksheet.make_cell(etud[1], self.styles["2r"]))
|
||||
lineno = lineno + 1
|
||||
if lineno >= maxlines: # fin de liste
|
||||
col = col + 1
|
||||
lineno = 0
|
||||
if col >= maxlistes: # fin de page
|
||||
for line_cells in lines:
|
||||
ws.append_row(line_cells)
|
||||
worksheet.append_row(line_cells)
|
||||
lines = [[] for _ in range(maxlines)]
|
||||
col = 0
|
||||
ws.append_blank_row()
|
||||
worksheet.append_blank_row()
|
||||
nb_etu_restant -= maxlistes * maxlines
|
||||
nb_listes = min(
|
||||
maxlistes, nb_etu_restant // maxlines + 1
|
||||
) # nombre de colonnes dans la page
|
||||
self._headers(ws, nb_listes)
|
||||
self._headers(worksheet, nb_listes)
|
||||
for line_cells in lines:
|
||||
ws.append_row(line_cells)
|
||||
worksheet.append_row(line_cells)
|
||||
|
||||
def _excel_feuille_placement(self):
|
||||
"""Genere feuille excel pour placement des etudiants.
|
||||
@ -586,8 +604,8 @@ class PlacementRunner:
|
||||
|
||||
workbook = ScoExcelBook()
|
||||
|
||||
SheetName0 = "Emargement"
|
||||
ws0 = workbook.create_sheet(SheetName0)
|
||||
sheet_name_0 = "Emargement"
|
||||
ws0 = workbook.create_sheet(sheet_name_0)
|
||||
# ajuste largeurs colonnes (unite inconnue, empirique)
|
||||
width = 4500 * column_width_ratio
|
||||
if nb_rangs > 5:
|
||||
@ -599,8 +617,8 @@ class PlacementRunner:
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[col + 1 : col + 2], width
|
||||
)
|
||||
|
||||
SheetName1 = "Positions"
|
||||
ws1 = workbook.create_sheet(SheetName1)
|
||||
sheet_name_1 = "Positions"
|
||||
ws1 = workbook.create_sheet(sheet_name_1)
|
||||
|
||||
self._make_styles(ws0, ws1)
|
||||
self._feuille0(ws0, space)
|
||||
|
@ -32,7 +32,7 @@
|
||||
{% for partition in form.groups_tree %}
|
||||
<tr>
|
||||
{% if partition == 'Tous' %}
|
||||
<td rowspan="{{ form.groups_tree_length }}">Groupes</td>
|
||||
<td rowspan="{{ form.nb_groups }}">Groupes</td>
|
||||
{% endif %}
|
||||
<td>{{ partition }}</td>
|
||||
<td>
|
||||
|
Loading…
Reference in New Issue
Block a user