From 065fc460cd132a32999c411438ecac972e576ab4 Mon Sep 17 00:00:00 2001 From: BOURON PASCAL Date: Mon, 6 Dec 2021 14:04:03 +0100 Subject: [PATCH] =?UTF-8?q?sco=5Fevaluations=20Gestion=20du=20non-affichag?= =?UTF-8?q?e=20de=20l'heure=20lorsqu'aucune=20date=20n'est=20fix=C3=A9e=20?= =?UTF-8?q?pour=20l'=C3=A9valuation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sco_liste_notes Generation de bordereaux de signatures pour les évaluations - nouveau type d'export pdf (nommé "bordereau") - ajout colonne signatures - modification de la page evaluation_listenotes pour intégrer le nouveau lien --- app/scodoc/sco_evaluations.py | 22 +++++++++++--- app/scodoc/sco_liste_notes.py | 57 ++++++++++++++++++++++++----------- 2 files changed, 57 insertions(+), 22 deletions(-) diff --git a/app/scodoc/sco_evaluations.py b/app/scodoc/sco_evaluations.py index 0fba0b3c..2ed311d3 100644 --- a/app/scodoc/sco_evaluations.py +++ b/app/scodoc/sco_evaluations.py @@ -1070,12 +1070,17 @@ def evaluation_describe(evaluation_id="", edit_in_place=True): ) else: # date et absences (pas pour evals de malus) - jour = E["jour"] or "pas de date" - H.append( - "

Réalisée le %s de %s à %s " - % (jour, E["heure_debut"], E["heure_fin"]) - ) if E["jour"]: + jour = E["jour"] + H.append( + "

Réalisée le %s " + % (jour) + ) + if E["heure_debut"] != E["heure_fin"]: + H.append( + "de %s à %s " + % (E["heure_debut"], E["heure_fin"]) + ) group_id = sco_groups.get_default_group(formsemestre_id) H.append( f"""(absences ce jour)""" ) + else: + jour = "pas de date" + H.append( + "

Réalisée le %s " + % (jour) + ) + H.append( '

Coefficient dans le module: %s, notes sur %g ' % (E["coefficient"], E["note_max"]) diff --git a/app/scodoc/sco_liste_notes.py b/app/scodoc/sco_liste_notes.py index d023dc84..101b7db8 100644 --- a/app/scodoc/sco_liste_notes.py +++ b/app/scodoc/sco_liste_notes.py @@ -1,4 +1,4 @@ -# -*- mode: python -*- +# -*- mode: python -*- # -*- coding: utf-8 -*- ############################################################################## @@ -271,8 +271,8 @@ def _make_table_notes( "expl_key": "Rem.", "email": "e-mail", "emailperso": "e-mail perso", + "signatures": "Signatures", } - rows = [] class keymgr(dict): # comment : key (pour regrouper les comments a la fin) @@ -399,7 +399,7 @@ def _make_table_notes( if with_emails: columns_ids += ["email", "emailperso"] # Ajoute lignes en tête et moyennes - if len(evals) > 0: + if len(evals) > 0 and format != 'bordereau': rows = [coefs, note_max] + rows rows.append(moys) # ajout liens HTMl vers affichage une evaluation: @@ -423,6 +423,8 @@ def _make_table_notes( columns_ids.append("expl_key") elif format == "xls" or format == "xml": columns_ids.append("comment") + elif format == "bordereau": + columns_ids.append("signatures") # titres divers: gl = "".join(["&group_ids%3Alist=" + str(g) for g in group_ids]) @@ -436,13 +438,33 @@ def _make_table_notes( gl = "&with_emails%3Alist=yes" + gl if len(evals) == 1: evalname = "%s-%s" % (Mod["code"], ndb.DateDMYtoISO(E["jour"])) - hh = "%s, %s (%d étudiants)" % (E["description"], gr_title, len(etudids)) filename = scu.make_filename("notes_%s_%s" % (evalname, gr_title_filename)) - caption = hh - if len(e["jour"]) > 0: - pdf_title = "%(description)s (%(jour)s)" % e + + + if format == 'bordereau': + hh = " %d étudiants" % (len(etudids)) + hh += " %d absent" % (nb_abs) + if nb_abs > 1: + hh += "s" + hh += ", %d en attente." % ( nb_att) + + pdf_title = '
BORDEREAU DE SIGNATURES' + pdf_title += '

%(titre)s' % sem + pdf_title += '
(%(mois_debut)s - %(mois_fin)s)' % sem + pdf_title += ' semestre %s %s' % (sem['semestre_id'],sem.get('modalite','')) + pdf_title += '
Notes du module %(code)s - %(titre)s' % Mod + pdf_title += '
Evaluation : %(description)s ' % e + if len(e["jour"]) > 0 : + pdf_title += " (%(jour)s)" % e + pdf_title += '(noté sur %(note_max)s )

' % e else: - pdf_title = "%(description)s " % e + hh = " %s, %s (%d étudiants)" % (E["description"], gr_title, len(etudids)) + if len(e["jour"]) > 0 : + pdf_title = "%(description)s (%(jour)s)" % e + else: + pdf_title = "%(description)s " % e + + caption = hh html_title = "" base_url = "evaluation_listenotes?evaluation_id=%s" % E["evaluation_id"] + gl html_next_section = ( @@ -457,7 +479,7 @@ def _make_table_notes( title += " %s" % gr_title caption = title html_next_section = "" - if format == "pdf": + if format == "pdf" or format == "bordereau": caption = "" # same as pdf_title pdf_title = title html_title = ( @@ -485,7 +507,8 @@ def _make_table_notes( preferences=sco_preferences.SemPreferences(M["formsemestre_id"]), # html_generate_cells=False # la derniere ligne (moyennes) est incomplete ) - + if format == "bordereau": + format = "pdf" t = tab.make_page(format=format, with_html_headers=False) if format != "html": return t @@ -504,12 +527,12 @@ def _make_table_notes( # Une seule evaluation: ajoute histogramme histo = histogram_notes(notes) # 2 colonnes: histo, comments - C = [ - "\n", - '

Répartition des notes:

" - + histo - + "

', - ] + C = [] + C.append('
Bordereau de Signatures (version PDF) %s'%(base_url, scu.ICON_PDF)) + C.append("
\n") + C.append('

Répartition des notes:

") + C.append( histo + "

') + commentkeys = list(K.items()) # [ (comment, key), ... ] commentkeys.sort(key=lambda x: int(x[1])) for (comment, key) in commentkeys: @@ -633,7 +656,7 @@ def _add_eval_columns( titles[evaluation_id] = "%(description)s (%(jour)s)" % e else: titles[evaluation_id] = "%(description)s " % e - + if e["eval_state"]["evalcomplete"]: titles["_" + str(evaluation_id) + "_td_attrs"] = 'class="eval_complete"' elif e["eval_state"]["evalattente"]: