1
0
forked from ScoDoc/ScoDoc

déplacement du template placement

This commit is contained in:
Jean-Marie Place 2021-09-17 05:54:11 +02:00
parent a23ae38014
commit 0ef822cfd8
2 changed files with 39 additions and 35 deletions

View File

@ -144,7 +144,7 @@ class PlacementForm(FlaskForm):
class _DistributeurContinu: class _DistributeurContinu:
"""Distribue les places selon un ordre numérique.""" """Distribue les places selon un ordre numérique."""
def __init(self): def __init__(self):
self.position = 1 self.position = 1
def suivant(self): def suivant(self):
@ -193,7 +193,7 @@ def placement_eval_selectetuds(evaluation_id):
H = [html_sco_header.sco_header(init_jquery_ui=True)] H = [html_sco_header.sco_header(init_jquery_ui=True)]
H.append(sco_evaluations.evaluation_describe(evaluation_id=evaluation_id)) H.append(sco_evaluations.evaluation_describe(evaluation_id=evaluation_id))
H.append("<h3>Placement et émargement des étudiants</h3>") H.append("<h3>Placement et émargement des étudiants</h3>")
H.append(render_template("forms/placement.html", form=form)) H.append(render_template("scodoc/forms/placement.html", form=form))
F = html_sco_header.sco_footer() F = html_sco_header.sco_footer()
return "\n".join(H) + "<p>" + F return "\n".join(H) + "<p>" + F
@ -493,36 +493,40 @@ class PlacementRunner:
# etudiants - feuille0 # etudiants - feuille0
place = 1 place = 1
for rang, linetud in enumerate(self.plan, start=1): col = 0
# Chaque rang est affiché sur 3 lignes xlsx (notées A, B, C) rang = 1
# ligne A: le nom, ligne B: le prénom, ligne C: un espace ou la place # Chaque rang est affiché sur 3 lignes xlsx (notées A, B, C)
cells_a = [ws0.make_cell(rang, self.styles["2b"])] # ligne A: le nom, ligne B: le prénom, ligne C: un espace ou la place
cells_b = [ws0.make_cell("", self.styles["2b"])] cells_a = [ws0.make_cell(rang, self.styles["2b"])]
cells_c = [ws0.make_cell("", self.styles["2b"])] cells_b = [ws0.make_cell("", self.styles["2b"])]
row = 14 # premieère ligne de signature cells_c = [ws0.make_cell("", self.styles["2b"])]
for etudid in linetud: row = 13 # première ligne de signature
cells_a.append(ws0.make_cell(etudid[0], self.styles["1t"])) for linetud in self.plan:
cells_b.append(ws0.make_cell(etudid[1], self.styles["1m"])) cells_a.append(ws0.make_cell(linetud[0][0], self.styles["1t"])) # nom
if self.etiquetage == COORD: cells_b.append(ws0.make_cell(linetud[0][1], self.styles["1m"])) # prenom
cell_c = ws0.make_cell("", self.styles["1bb"]) if self.etiquetage == COORD:
else: cell_c = ws0.make_cell("", self.styles["1bb"])
cell_c = ws0.make_cell("place %s" % place, self.styles["1bb"]) else:
cells_c.append(cell_c) cell_c = ws0.make_cell("place %s" % place, self.styles["1bb"])
ws0.set_row_dimension_height(row, space / 25)
row += 3
place = place + 1 place = place + 1
if col == self.nb_rangs: cells_c.append(cell_c)
ws0.append_row(cells_a)
ws0.append_row(cells_b)
ws0.append_row(cells_c)
cells_a = [ws0.make_cell(rang, self.styles["2b"])]
cells_b = [ws0.make_cell("", self.styles["2b"])]
cells_c = [ws0.make_cell("", self.styles["2b"])]
# publication du rang final incomplet
ws0.append_row(cells_a)
ws0.append_row(cells_b)
ws0.append_row(cells_c)
ws0.set_row_dimension_height(row, space / 25) ws0.set_row_dimension_height(row, space / 25)
row += 3
col += 1
if col == self.nb_rangs: # On a fini la rangée courante
ws0.append_row(cells_a) # on affiche les 3 lignes construites
ws0.append_row(cells_b)
ws0.append_row(cells_c)
cells_a = [ws0.make_cell(rang, self.styles["2b"])] # on réinitialise les 3 lignes
cells_b = [ws0.make_cell("", self.styles["2b"])]
cells_c = [ws0.make_cell("", self.styles["2b"])]
col = 0
rang += 1
# publication du rang final incomplet
ws0.append_row(cells_a) # Affiche des 3 lignes (dernières lignes incomplètes)
ws0.append_row(cells_b)
ws0.append_row(cells_c)
ws0.set_row_dimension_height(row, space / 25)
def _next_page(ws): def _next_page(ws):
pass pass
@ -553,15 +557,15 @@ class PlacementRunner:
lines = self._init_lines(maxlines) lines = self._init_lines(maxlines)
line = 0 line = 0
col = 0 col = 0
for etud in sorted(self.plan, key=lambda etud: etud[0][0]): for etud in sorted(self.plan, key=lambda e: e[0][0]): # tri alphabétique
# check for skip of list or page # check for skip of list or page
if col > 0: # add a empty cell between lists if col > 0: # add a empty cell between lists
lines[line].append(ws.make_cell()) lines[line].append(ws.make_cell())
lines[line].append(ws.make_cell(etud[0][0], self.styles["2l"])) lines[line].append(ws.make_cell(etud[0][0], self.styles["2l"]))
lines[line].append(ws.make_cell(etud[0][1], self.styles["2m1"])) lines[line].append(ws.make_cell(etud[0][1], self.styles["2m1"]))
if self.etiquetage == COORD: if self.etiquetage == COORD:
lines[line].append(ws.make_cell(etud[1][0], self.styles["2m2"])) lines[line].append(ws.make_cell(etud[1][1], self.styles["2m2"]))
lines[line].append(ws.make_cell(etud[1][1], self.styles["2r"])) lines[line].append(ws.make_cell(etud[1][0], self.styles["2r"]))
else: else:
lines[line].append(ws.make_cell(etud[1], self.styles["2r"])) lines[line].append(ws.make_cell(etud[1], self.styles["2r"]))
line = line + 1 line = line + 1
@ -586,7 +590,6 @@ class PlacementRunner:
lines: liste de tuples lines: liste de tuples
(etudid, nom, prenom, etat, groupe, val, explanation) (etudid, nom, prenom, etat, groupe, val, explanation)
""" """
breakpoint()
sem_preferences = sco_preferences.SemPreferences() sem_preferences = sco_preferences.SemPreferences()
space = sem_preferences.get("feuille_placement_emargement") space = sem_preferences.get("feuille_placement_emargement")
maxlines = sem_preferences.get("feuille_placement_positions") maxlines = sem_preferences.get("feuille_placement_positions")

View File

@ -28,7 +28,7 @@
{{ render_field(form.etiquetage) }} {{ render_field(form.etiquetage) }}
{% if form.has_groups %} {% if form.has_groups %}
{{ render_field(form.groups) }} {{ render_field(form.groups) }}
<!-- <!-- Tentative de recréer le choix des groupes sous forme de cases à cocher // demande à créer des champs wtf dynamiquement
{% for partition in form.groups_tree %} {% for partition in form.groups_tree %}
<tr> <tr>
{% if partition == 'Tous' %} {% if partition == 'Tous' %}
@ -60,6 +60,7 @@
<li>continue suppose que les tables ont toutes un numéro unique;</li> <li>continue suppose que les tables ont toutes un numéro unique;</li>
<li>coordonnées localise chaque table via un numéro de colonne et un numéro de ligne (ou rangée).</li> <li>coordonnées localise chaque table via un numéro de colonne et un numéro de ligne (ou rangée).</li>
</ul></li> </ul></li>
<li>il est possible de choisir un ou plusieurs groupes (shift/ctrl click) ou de choisir 'tous'.</li>
<li>Choisir le format du fichier résultat : <li>Choisir le format du fichier résultat :
<ul> <ul>
<li>le format pdf consiste en un tableau précisant pour chaque étudiant la localisation de sa table;</li> <li>le format pdf consiste en un tableau précisant pour chaque étudiant la localisation de sa table;</li>