From b7e5c12aa16dd6c1ad762de31069c91048e244b6 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Mon, 2 Aug 2021 10:16:14 +0300 Subject: [PATCH] =?UTF-8?q?petites=20modifs=20pour=20int=C3=A9gration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_excel.py | 104 +++++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 48 deletions(-) diff --git a/app/scodoc/sco_excel.py b/app/scodoc/sco_excel.py index 46679b118..7ac59ba8f 100644 --- a/app/scodoc/sco_excel.py +++ b/app/scodoc/sco_excel.py @@ -30,8 +30,6 @@ """ import time, datetime -# #sco8 #py3 XXX TODO A revoir utiliser d'autres modules -# from pyExcelerator import * import app.scodoc.sco_utils as scu from app.scodoc import notesdb @@ -364,12 +362,12 @@ def Excel_feuille_saisie(E, titreannee, description, lines): # ligne de titres li = 0 ws0.write( - li, 0, u"Feuille saisie note (à enregistrer au format excel)", style_titres + li, 0, "Feuille saisie note (à enregistrer au format excel)", style_titres ) li += 1 - ws0.write(li, 0, u"Saisir les notes dans la colonne E (cases jaunes)", style_expl) + ws0.write(li, 0, "Saisir les notes dans la colonne E (cases jaunes)", style_expl) li += 1 - ws0.write(li, 0, u"Ne pas modifier les cases en mauve !", style_expl) + ws0.write(li, 0, "Ne pas modifier les cases en mauve !", style_expl) li += 1 # Nom du semestre ws0.write( @@ -382,17 +380,17 @@ def Excel_feuille_saisie(E, titreannee, description, lines): ) li += 1 ws0.write( - li, 0, u"Evaluation du %s (coef. %g)" % (E["jour"], E["coefficient"]), style + li, 0, "Evaluation du %s (coef. %g)" % (E["jour"], E["coefficient"]), style ) li += 1 li += 1 # ligne blanche # code et titres colonnes - ws0.write(li, 0, u"!%s" % E["evaluation_id"], style_ro) - ws0.write(li, 1, u"Nom", style_titres) - ws0.write(li, 2, u"Prénom", style_titres) - ws0.write(li, 3, u"Groupe", style_titres) - ws0.write(li, 4, u"Note sur %g" % E["note_max"], style_titres) - ws0.write(li, 5, u"Remarque", style_titres) + ws0.write(li, 0, "!%s" % E["evaluation_id"], style_ro) + ws0.write(li, 1, "Nom", style_titres) + ws0.write(li, 2, "Prénom", style_titres) + ws0.write(li, 3, "Groupe", style_titres) + ws0.write(li, 4, "Note sur %g" % E["note_max"], style_titres) + ws0.write(li, 5, "Remarque", style_titres) # etudiants for line in lines: li += 1 @@ -417,17 +415,17 @@ def Excel_feuille_saisie(E, titreannee, description, lines): ws0.write(li, 5, line[6].decode(scu.SCO_ENCODING), style_comment) # comment # explication en bas li += 2 - ws0.write(li, 1, u"Code notes", style_titres) - ws0.write(li + 1, 1, u"ABS", style_expl) - ws0.write(li + 1, 2, u"absent (0)", style_expl) - ws0.write(li + 2, 1, u"EXC", style_expl) - ws0.write(li + 2, 2, u"pas prise en compte", style_expl) - ws0.write(li + 3, 1, u"ATT", style_expl) - ws0.write(li + 3, 2, u"en attente", style_expl) - ws0.write(li + 4, 1, u"SUPR", style_expl) - ws0.write(li + 4, 2, u"pour supprimer note déjà entrée", style_expl) - ws0.write(li + 5, 1, u"", style_expl) - ws0.write(li + 5, 2, u"cellule vide -> note non modifiée", style_expl) + ws0.write(li, 1, "Code notes", style_titres) + ws0.write(li + 1, 1, "ABS", style_expl) + ws0.write(li + 1, 2, "absent (0)", style_expl) + ws0.write(li + 2, 1, "EXC", style_expl) + ws0.write(li + 2, 2, "pas prise en compte", style_expl) + ws0.write(li + 3, 1, "ATT", style_expl) + ws0.write(li + 3, 2, "en attente", style_expl) + ws0.write(li + 4, 1, "SUPR", style_expl) + ws0.write(li + 4, 2, "pour supprimer note déjà entrée", style_expl) + ws0.write(li + 5, 1, "", style_expl) + ws0.write(li + 5, 2, "cellule vide -> note non modifiée", style_expl) return wb.savetostr() @@ -479,11 +477,12 @@ def Excel_to_list(data, convert_to_string=str): # we may need 'encoding' argume # return diag, M + # Un style est enregistré comme un dictionnaire qui précise la valeur d'un attributdans la liste suivante: # font, border, .. (cf https://openpyxl.readthedocs.io/en/stable/styles.html#working-with-styles) -def __make_cell(ws, value: any = u"", style=None): +def _make_cell(ws, value: any = "", style=None): """Contruit/retourne une cellule en spécifiant contenu et style. ws -- La feuille où sera intégrée la cellule @@ -498,8 +497,15 @@ def __make_cell(ws, value: any = u"", style=None): return cell -def excel_feuille_listeappel(sem, groupname, lines, partitions=None, with_codes=False, with_paiement=False, - server_name=None): +def excel_feuille_listeappel( + sem, + groupname, + lines, + partitions=None, + with_codes=False, + with_paiement=False, + server_name=None, +): """generation feuille appel""" if partitions is None: partitions = [] @@ -563,20 +569,22 @@ def excel_feuille_listeappel(sem, groupname, lines, partitions=None, with_codes= sem["date_fin"], ) - cell_2 = __make_cell(ws, title, style2) + cell_2 = _make_cell(ws, title, style2) ws.append([None, cell_2]) # ligne 2 - cell_2 = __make_cell(ws, u"Discipline :", style2) + cell_2 = _make_cell(ws, "Discipline :", style2) ws.append([None, cell_2]) # ligne 3 - cell_2 = __make_cell(ws, u"Enseignant :", style2) - cell_6 = __make_cell(ws, ("Groupe %s" % groupname), style3) + cell_2 = _make_cell(ws, "Enseignant :", style2) + cell_6 = _make_cell(ws, ("Groupe %s" % groupname), style3) ws.append([None, cell_2, None, None, None, None, cell_6]) # ligne 4: Avertissement pour ne pas confondre avec listes notes - cell_2 = __make_cell(ws, u"Ne pas utiliser cette feuille pour saisir les notes !", style1i) + cell_2 = _make_cell( + ws, "Ne pas utiliser cette feuille pour saisir les notes !", style1i + ) ws.append([None, None, cell_2]) ws.append([None]) @@ -584,16 +592,16 @@ def excel_feuille_listeappel(sem, groupname, lines, partitions=None, with_codes= # ligne 7: Entête (contruction dans une liste cells) cells = [None] # passe la première colonne - cell_2 = __make_cell(ws, u"Nom", style3) + cell_2 = _make_cell(ws, "Nom", style3) cells.append(cell_2) for partition in partitions: - cells.append(__make_cell(ws, partition["partition_name"], style3)) + cells.append(_make_cell(ws, partition["partition_name"], style3)) if with_codes: - cells.append(__make_cell(ws, u"etudid", style3)) - cells.append(__make_cell(ws, u"code_nip", style3)) - cells.append(__make_cell(ws, u"code_ine", style3)) + cells.append(_make_cell(ws, "etudid", style3)) + cells.append(_make_cell(ws, "code_nip", style3)) + cells.append(_make_cell(ws, "code_ine", style3)) for i in range(nb_weeks): - cells.append(__make_cell(ws, "", style2b)) + cells.append(_make_cell(ws, "", style2b)) ws.append(cells) n = 0 @@ -616,24 +624,24 @@ def excel_feuille_listeappel(sem, groupname, lines, partitions=None, with_codes= elif not paie: nomprenom += " (non paiement)" style_nom = style2t3bold - cell_1 = __make_cell(ws, n, style1b) - cell_2 = __make_cell(ws, nomprenom, style_nom) + cell_1 = _make_cell(ws, n, style1b) + cell_2 = _make_cell(ws, nomprenom, style_nom) cells = [cell_1, cell_2] for partition in partitions: if partition["partition_name"]: cells.append( - __make_cell(ws, t.get(partition["partition_id"], u""), style2t3) + _make_cell(ws, t.get(partition["partition_id"], ""), style2t3) ) if with_codes: - cells.append(__make_cell(ws, t["etudid"], style2t3)) - code_nip = t.get("code_nip", u"") - cells.append(__make_cell(ws, code_nip, style2t3)) - code_ine = t.get("code_ine", u"") - cells.append(__make_cell(ws, code_ine, style2t3)) - cells.append(__make_cell(ws, t.get("etath", ""), style2b)) + cells.append(_make_cell(ws, t["etudid"], style2t3)) + code_nip = t.get("code_nip", "") + cells.append(_make_cell(ws, code_nip, style2t3)) + code_ine = t.get("code_ine", "") + cells.append(_make_cell(ws, code_ine, style2t3)) + cells.append(_make_cell(ws, t.get("etath", ""), style2b)) for i in range(1, nb_weeks): - cells.append(__make_cell(ws, style=style2t3)) + cells.append(_make_cell(ws, style=style2t3)) # ws0.row(li).height = 850 # sans effet ? # (openpyxl: en mode optimisé, les hauteurs de lignes doivent être spécifiées avant toutes les cellules) ws.append(cells) @@ -644,7 +652,7 @@ def excel_feuille_listeappel(sem, groupname, lines, partitions=None, with_codes= dt = time.strftime("%d/%m/%Y à %Hh%M") if server_name: dt += " sur " + server_name - cell_2 = __make_cell(ws, ("Liste éditée le " + dt), style1i) + cell_2 = _make_cell(ws, ("Liste éditée le " + dt), style1i) ws.append([None, cell_2]) # construction d'un flux (https://openpyxl.readthedocs.io/en/stable/tutorial.html#saving-as-a-stream)