Compare commits
5 Commits
master
...
correction
Author | SHA1 | Date |
---|---|---|
Jean-Marie PLACE | 52a5fb68b5 | |
Jean-Marie PLACE | b99839088b | |
Jean-Marie PLACE | aa0f9aab77 | |
Jean-Marie PLACE | a644fd2584 | |
Jean-Marie PLACE | 23b2c9ebce |
|
@ -218,6 +218,17 @@ def get_code_latex_avis_etudiant(
|
||||||
return code
|
return code
|
||||||
|
|
||||||
|
|
||||||
|
def get_annotations(etudids, tag_annotation_pe):
|
||||||
|
annotations = {} # etudid -> ( general, [ ecole -> specifique ] )
|
||||||
|
ecoles = set()
|
||||||
|
for etudid in etudids: # parcours des étudiants
|
||||||
|
generale, specifiques = get_annotation_PE(etudid, tag_annotation_pe)
|
||||||
|
annotations[etudid] = (generale, specifiques)
|
||||||
|
for ecole in specifiques.keys():
|
||||||
|
ecoles.add(ecole)
|
||||||
|
return ecoles, annotations
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------------------
|
||||||
def get_annotation_PE(etudid, tag_annotation_pe):
|
def get_annotation_PE(etudid, tag_annotation_pe):
|
||||||
"""Renvoie l'annotation PE dans la liste de ces annotations ;
|
"""Renvoie l'annotation PE dans la liste de ces annotations ;
|
||||||
|
@ -225,6 +236,8 @@ def get_annotation_PE(etudid, tag_annotation_pe):
|
||||||
(cf. .get_preferences -> pe_tag_annotation_avis_latex).
|
(cf. .get_preferences -> pe_tag_annotation_avis_latex).
|
||||||
|
|
||||||
Result: chaine unicode
|
Result: chaine unicode
|
||||||
|
patch JMP
|
||||||
|
Result: <generale> { <ecole> : wspecifique> }
|
||||||
"""
|
"""
|
||||||
if tag_annotation_pe:
|
if tag_annotation_pe:
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
|
@ -255,8 +268,14 @@ def get_annotation_PE(etudid, tag_annotation_pe):
|
||||||
annotationPE = annotationPE.replace(
|
annotationPE = annotationPE.replace(
|
||||||
"<br/>", "\n\n"
|
"<br/>", "\n\n"
|
||||||
) # Interprète les retours chariots html
|
) # Interprète les retours chariots html
|
||||||
return annotationPE
|
splitted = annotationPE.split("@")
|
||||||
return "" # pas d'annotations
|
generale = splitted[0]
|
||||||
|
specifiques = {}
|
||||||
|
for slice in splitted[1:]:
|
||||||
|
ecole, specifique = slice.split(":", 1)
|
||||||
|
specifiques[ecole] = specifique
|
||||||
|
return generale, specifiques
|
||||||
|
return "", {} # pas d'annotations
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------------------
|
||||||
|
@ -381,22 +400,58 @@ def get_bilanParTag(donnees_etudiant, groupe="groupe"):
|
||||||
return code_latex
|
return code_latex
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------------------
|
|
||||||
def get_avis_poursuite_par_etudiant(
|
def get_avis_poursuite_par_etudiant(
|
||||||
jury, etudid, template_latex, tag_annotation_pe, footer_latex, prefs
|
jury, etudid, template_latex, tag_annotation_pe, footer_latex, prefs
|
||||||
|
):
|
||||||
|
if pe_tools.PE_DEBUG:
|
||||||
|
pe_tools.pe_print(
|
||||||
|
"avis etudiant: " + jury.syntheseJury[etudid]["nom"] + " " + str(etudid)
|
||||||
|
)
|
||||||
|
|
||||||
|
generale, specifiques = get_annotation_PE(etudid, tag_annotation_pe)
|
||||||
|
results = []
|
||||||
|
if len(specifiques) == 0:
|
||||||
|
annotation = generale
|
||||||
|
results.append(
|
||||||
|
get_avis_poursuite_par_candidature(
|
||||||
|
jury, template_latex, footer_latex, prefs, etudid, annotation
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
for ecole, specifique in specifiques.items():
|
||||||
|
annotation = f"{generale}\n{ecole}:{specifique}"
|
||||||
|
results.append(
|
||||||
|
get_avis_poursuite_par_candidature(
|
||||||
|
jury, template_latex, footer_latex, prefs, etudid, annotation, ecole
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
# candidature = etudiant x ecole
|
||||||
|
# ----------------------------------------------------------------------------------------
|
||||||
|
def get_avis_poursuite_par_candidature(
|
||||||
|
jury, template_latex, footer_latex, prefs, etudid, annotation, ecole=""
|
||||||
):
|
):
|
||||||
"""Renvoie un nom de fichier et le contenu de l'avis latex d'un étudiant dont l'etudid est fourni.
|
"""Renvoie un nom de fichier et le contenu de l'avis latex d'un étudiant dont l'etudid est fourni.
|
||||||
result: [ chaine unicode, chaine unicode ]
|
result: [ chaine unicode, chaine unicode ]
|
||||||
"""
|
"""
|
||||||
if pe_tools.PE_DEBUG:
|
if pe_tools.PE_DEBUG:
|
||||||
pe_tools.pe_print(jury.syntheseJury[etudid]["nom"] + " " + str(etudid))
|
pe_tools.pe_print(
|
||||||
|
"avis candidature: "
|
||||||
|
+ jury.syntheseJury[etudid]["nom"]
|
||||||
|
+ " "
|
||||||
|
+ str(etudid)
|
||||||
|
+ " "
|
||||||
|
+ ecole
|
||||||
|
)
|
||||||
|
|
||||||
civilite_str = jury.syntheseJury[etudid]["civilite_str"]
|
civilite_str = jury.syntheseJury[etudid]["civilite_str"]
|
||||||
nom = jury.syntheseJury[etudid]["nom"].replace(" ", "-")
|
nom = jury.syntheseJury[etudid]["nom"].replace(" ", "-")
|
||||||
prenom = jury.syntheseJury[etudid]["prenom"].replace(" ", "-")
|
prenom = jury.syntheseJury[etudid]["prenom"].replace(" ", "-")
|
||||||
|
|
||||||
nom_fichier = scu.sanitize_filename(
|
nom_fichier = scu.sanitize_filename(
|
||||||
"avis_poursuite_%s_%s_%s" % (nom, prenom, etudid)
|
"avis_poursuite_%s_%s_%s_%s" % (nom, prenom, etudid, ecole)
|
||||||
)
|
)
|
||||||
if pe_tools.PE_DEBUG:
|
if pe_tools.PE_DEBUG:
|
||||||
pe_tools.pe_print("fichier latex =" + nom_fichier, type(nom_fichier))
|
pe_tools.pe_print("fichier latex =" + nom_fichier, type(nom_fichier))
|
||||||
|
@ -406,19 +461,14 @@ def get_avis_poursuite_par_etudiant(
|
||||||
"%% ---- Etudiant: " + civilite_str + " " + nom + " " + prenom + "\n"
|
"%% ---- Etudiant: " + civilite_str + " " + nom + " " + prenom + "\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
# les annnotations
|
|
||||||
annotationPE = get_annotation_PE(etudid, tag_annotation_pe=tag_annotation_pe)
|
|
||||||
if pe_tools.PE_DEBUG:
|
|
||||||
pe_tools.pe_print(annotationPE, type(annotationPE))
|
|
||||||
|
|
||||||
# le LaTeX
|
# le LaTeX
|
||||||
avis = get_code_latex_avis_etudiant(
|
avis = get_code_latex_avis_etudiant(
|
||||||
jury.syntheseJury[etudid], template_latex, annotationPE, footer_latex, prefs
|
jury.syntheseJury[etudid], template_latex, annotation, footer_latex, prefs
|
||||||
)
|
)
|
||||||
# if pe_tools.PE_DEBUG: pe_tools.pe_print(avis, type(avis))
|
# if pe_tools.PE_DEBUG: pe_tools.pe_print(avis, type(avis))
|
||||||
contenu_latex += avis + "\n"
|
contenu_latex += avis + "\n"
|
||||||
|
|
||||||
return [nom_fichier, contenu_latex]
|
return nom_fichier, contenu_latex
|
||||||
|
|
||||||
|
|
||||||
def get_templates_from_distrib(template="avis"):
|
def get_templates_from_distrib(template="avis"):
|
||||||
|
@ -472,12 +522,16 @@ def table_syntheseAnnotationPE(syntheseJury, tag_annotation_pe):
|
||||||
maxParcours = max(
|
maxParcours = max(
|
||||||
[syntheseJury[etudid]["nbSemestres"] for etudid in etudids]
|
[syntheseJury[etudid]["nbSemestres"] for etudid in etudids]
|
||||||
) # le nombre de semestre le + grand
|
) # le nombre de semestre le + grand
|
||||||
|
# calcul de l'inventaire des annotations
|
||||||
|
ecoles, annotations = get_annotations(etudids, tag_annotation_pe)
|
||||||
|
|
||||||
infos = ["civilite", "nom", "prenom", "age", "nbSemestres"]
|
infos = ["civilite", "nom", "prenom", "age", "nbSemestres"]
|
||||||
entete = ["etudid"]
|
entete = ["etudid"]
|
||||||
entete.extend(infos)
|
entete.extend(infos)
|
||||||
entete.extend(["P%d" % i for i in range(1, maxParcours + 1)]) # ajout du parcours
|
entete.extend(["P%d" % i for i in range(1, maxParcours + 1)]) # ajout du parcours
|
||||||
entete.append("Annotation PE")
|
entete.append("Annotation PE")
|
||||||
|
for ecole in sorted(ecoles):
|
||||||
|
entete.append(ecole)
|
||||||
columns_ids = entete # les id et les titres de colonnes sont ici identiques
|
columns_ids = entete # les id et les titres de colonnes sont ici identiques
|
||||||
titles = {i: i for i in columns_ids}
|
titles = {i: i for i in columns_ids}
|
||||||
|
|
||||||
|
@ -502,8 +556,10 @@ def table_syntheseAnnotationPE(syntheseJury, tag_annotation_pe):
|
||||||
n += 1
|
n += 1
|
||||||
|
|
||||||
# L'annotation PE
|
# L'annotation PE
|
||||||
annotationPE = get_annotation_PE(etudid, tag_annotation_pe=tag_annotation_pe)
|
generale, specifiques = annotations[etudid]
|
||||||
row["Annotation PE"] = annotationPE if annotationPE else ""
|
row["Annotation PE"] = generale
|
||||||
|
for ecole in sorted(ecoles):
|
||||||
|
row[ecole] = specifiques.get(ecole, "")
|
||||||
rows.append(row)
|
rows.append(row)
|
||||||
|
|
||||||
T = GenTable(
|
T = GenTable(
|
||||||
|
|
|
@ -623,7 +623,7 @@ class JuryPE(object):
|
||||||
u" - %d étudiants classés " % (nbinscrit)
|
u" - %d étudiants classés " % (nbinscrit)
|
||||||
+ ": "
|
+ ": "
|
||||||
+ ",".join(
|
+ ",".join(
|
||||||
[etudid for etudid in self.semTagDict[fid].get_etudids()]
|
[str(etudid) for etudid in self.semTagDict[fid].get_etudids()]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if lesEtudidsManquants:
|
if lesEtudidsManquants:
|
||||||
|
@ -631,7 +631,7 @@ class JuryPE(object):
|
||||||
u" - dont %d étudiants manquants ajoutés aux données du jury"
|
u" - dont %d étudiants manquants ajoutés aux données du jury"
|
||||||
% (len(lesEtudidsManquants))
|
% (len(lesEtudidsManquants))
|
||||||
+ ": "
|
+ ": "
|
||||||
+ ", ".join(lesEtudidsManquants)
|
+ ", ".join(str(lesEtudidsManquants))
|
||||||
)
|
)
|
||||||
pe_tools.pe_print(u" - Export csv")
|
pe_tools.pe_print(u" - Export csv")
|
||||||
filename = self.NOM_EXPORT_ZIP + self.semTagDict[fid].nom + ".csv"
|
filename = self.NOM_EXPORT_ZIP + self.semTagDict[fid].nom + ".csv"
|
||||||
|
|
|
@ -265,7 +265,7 @@ class TableTag(object):
|
||||||
for etudid in self.identdict:
|
for etudid in self.identdict:
|
||||||
descr = delim.join(
|
descr = delim.join(
|
||||||
[
|
[
|
||||||
etudid,
|
str(etudid),
|
||||||
self.identdict[etudid]["nom"],
|
self.identdict[etudid]["nom"],
|
||||||
self.identdict[etudid]["prenom"],
|
self.identdict[etudid]["prenom"],
|
||||||
]
|
]
|
||||||
|
|
|
@ -48,7 +48,7 @@ import app.scodoc.sco_utils as scu
|
||||||
from app import log
|
from app import log
|
||||||
from app.scodoc.sco_logos import find_logo
|
from app.scodoc.sco_logos import find_logo
|
||||||
|
|
||||||
PE_DEBUG = 0
|
PE_DEBUG = 1
|
||||||
|
|
||||||
if not PE_DEBUG:
|
if not PE_DEBUG:
|
||||||
# log to notes.log
|
# log to notes.log
|
||||||
|
@ -56,6 +56,7 @@ if not PE_DEBUG:
|
||||||
# kw is ignored. log always add a newline
|
# kw is ignored. log always add a newline
|
||||||
log(" ".join(a))
|
log(" ".join(a))
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
pe_print = print # print function
|
pe_print = print # print function
|
||||||
|
|
||||||
|
@ -203,12 +204,12 @@ def add_pe_stuff_to_zip(zipfile, ziproot):
|
||||||
add_local_file_to_zip(zipfile, ziproot, pathname, "avis/" + filename)
|
add_local_file_to_zip(zipfile, ziproot, pathname, "avis/" + filename)
|
||||||
|
|
||||||
# Logos: (add to logos/ directory in zip)
|
# Logos: (add to logos/ directory in zip)
|
||||||
logos_names = ["header", "footer"]
|
logos_names = ["header", "footer", "IUT_LILLE"]
|
||||||
for name in logos_names:
|
for name in logos_names:
|
||||||
logo = find_logo(logoname=name, dept_id=g.scodoc_dept_id)
|
logo = find_logo(logoname=name, dept_id=g.scodoc_dept_id)
|
||||||
if logo is not None:
|
if logo is not None:
|
||||||
add_local_file_to_zip(
|
add_local_file_to_zip(
|
||||||
zipfile, ziproot, logo.filepath, "avis/logos/" + logo.filename
|
zipfile, ziproot, logo.filepath, "avis/logos/logo_" + logo.filename
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -145,16 +145,17 @@ def pe_view_sem_recap(
|
||||||
|
|
||||||
latex_pages = {} # Dictionnaire de la forme nom_fichier => contenu_latex
|
latex_pages = {} # Dictionnaire de la forme nom_fichier => contenu_latex
|
||||||
for etudid in etudids:
|
for etudid in etudids:
|
||||||
[nom_fichier, contenu_latex] = pe_avislatex.get_avis_poursuite_par_etudiant(
|
for fichier_latex in pe_avislatex.get_avis_poursuite_par_etudiant(
|
||||||
jury,
|
jury,
|
||||||
etudid,
|
etudid,
|
||||||
template_latex,
|
template_latex,
|
||||||
tag_annotation_pe,
|
tag_annotation_pe,
|
||||||
footer_latex,
|
footer_latex,
|
||||||
prefs,
|
prefs,
|
||||||
)
|
):
|
||||||
jury.add_file_to_zip("avis/" + nom_fichier + ".tex", contenu_latex)
|
nom_fichier, contenu_latex = fichier_latex
|
||||||
latex_pages[nom_fichier] = contenu_latex # Sauvegarde dans un dico
|
jury.add_file_to_zip("avis/" + nom_fichier + ".tex", contenu_latex)
|
||||||
|
latex_pages[nom_fichier] = contenu_latex # Sauvegarde dans un dico
|
||||||
|
|
||||||
# Nouvelle version : 1 fichier par étudiant avec 1 fichier appelant créée ci-dessous
|
# Nouvelle version : 1 fichier par étudiant avec 1 fichier appelant créée ci-dessous
|
||||||
doc_latex = "\n% -----\n".join(
|
doc_latex = "\n% -----\n".join(
|
||||||
|
|
|
@ -0,0 +1,164 @@
|
||||||
|
%% Original : Cléo BARAS
|
||||||
|
%%
|
||||||
|
%% Template LaTeX des avis
|
||||||
|
%%
|
||||||
|
%% Version 1.0
|
||||||
|
%%
|
||||||
|
%% Ce fichier est distribué par ScoDoc
|
||||||
|
%%
|
||||||
|
%% Si vous voulez le modifier sur le serveur, copiez le dans
|
||||||
|
%% ../local/
|
||||||
|
%% et éditez votre copie dans local.
|
||||||
|
%%
|
||||||
|
|
||||||
|
|
||||||
|
% Ce document est n'est pas utilisé si le paramètre eTemplate LaTeX des avis" est rempli.
|
||||||
|
|
||||||
|
% ************************************************************
|
||||||
|
% En-tête de l'avis
|
||||||
|
% ************************************************************
|
||||||
|
\begin{entete}{logos/header}
|
||||||
|
\textbf{\Huge{Avis de Poursuites d'Etudes}} \\
|
||||||
|
\ligne \\
|
||||||
|
\normalsize{Département **DeptFullName**} \\
|
||||||
|
\normalsize{**InstituteName**} \\
|
||||||
|
\end{entete}
|
||||||
|
|
||||||
|
\begin{nom}
|
||||||
|
**sexe** **prenom** **nom** (**age** ans)
|
||||||
|
\end{nom}
|
||||||
|
|
||||||
|
% ************************************************************
|
||||||
|
% Parcours scolaire de l'étudiant
|
||||||
|
% ************************************************************
|
||||||
|
|
||||||
|
\begin{rubrique}{Parcours scolaire}
|
||||||
|
|
||||||
|
% TIMELINE
|
||||||
|
**parcourstimeline**
|
||||||
|
|
||||||
|
{
|
||||||
|
\scriptsize
|
||||||
|
\textbf{Guide de lecture} :
|
||||||
|
$\bullet$ Les options de la formation: FI = initiale, UFA = alternance (contrat pro), ENEPS = École nationale de l'enseignement professionnel supérieur
|
||||||
|
}
|
||||||
|
\end{rubrique}
|
||||||
|
|
||||||
|
% ************************************************************
|
||||||
|
% Bilan scolaire
|
||||||
|
% ************************************************************
|
||||||
|
|
||||||
|
\begin{rubrique}{Bilan scolaire synthétique}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{tabular}{|p{0.08\textwidth}|p{0.11\textwidth}|*{8}{p{0.07\textwidth}|}}
|
||||||
|
% Titres des colonnes
|
||||||
|
\hline & \textbf{Resultats} & \multicolumn{4}{c|}{\textbf{Dans le groupe}\textdagger}
|
||||||
|
& \multicolumn{4}{c|}{\textbf{Dans la promo}\textdagger} \\
|
||||||
|
& & Class. & Min & Moy & Max
|
||||||
|
& Class. & Min & Moy & Max \\
|
||||||
|
\hline
|
||||||
|
\hline S1 & **S1:groupe:dut:note** & **S1:groupe:dut:rang**
|
||||||
|
& {\scriptsize **S1:groupe:dut:min**}
|
||||||
|
& {\scriptsize **S1:groupe:dut:moy**}
|
||||||
|
& {\scriptsize **S1:groupe:dut:max**}
|
||||||
|
& **S1:promo:dut:rang**
|
||||||
|
& {\scriptsize **S1:promo:dut:min**}
|
||||||
|
& {\scriptsize **S1:promo:dut:moy**}
|
||||||
|
& {\scriptsize **S1:promo:dut:max**} \\
|
||||||
|
\hline S2 & **S2:groupe:dut:note** & **S2:groupe:dut:rang**
|
||||||
|
& {\scriptsize **S2:groupe:dut:min**}
|
||||||
|
& {\scriptsize **S2:groupe:dut:moy**}
|
||||||
|
& {\scriptsize **S2:groupe:dut:max**}
|
||||||
|
& **S2:promo:dut:rang**
|
||||||
|
& {\scriptsize **S2:promo:dut:min**}
|
||||||
|
& {\scriptsize **S2:promo:dut:moy**}
|
||||||
|
& {\scriptsize **S2:promo:dut:max**} \\
|
||||||
|
\hline
|
||||||
|
\hline \cellcolor{black!20} 1A & **1A:groupe:dut:note** & **1A:groupe:dut:rang**
|
||||||
|
& {\scriptsize **1A:groupe:dut:min**}
|
||||||
|
& {\scriptsize **1A:groupe:dut:moy**}
|
||||||
|
& {\scriptsize **1A:groupe:dut:max**}
|
||||||
|
& **1A:promo:dut:rang**
|
||||||
|
& {\scriptsize **1A:promo:dut:min**}
|
||||||
|
& {\scriptsize **1A:promo:dut:moy**}
|
||||||
|
& {\scriptsize **1A:promo:dut:max**} \\
|
||||||
|
\hline
|
||||||
|
\hline S3 & **S3:groupe:dut:note** & **S3:groupe:dut:rang**
|
||||||
|
& {\scriptsize **S3:groupe:dut:min**}
|
||||||
|
& {\scriptsize **S3:groupe:dut:moy**}
|
||||||
|
& {\scriptsize **S3:groupe:dut:max**}
|
||||||
|
& **S3:promo:dut:rang**
|
||||||
|
& {\scriptsize **S3:promo:dut:min**}
|
||||||
|
& {\scriptsize **S3:promo:dut:moy**}
|
||||||
|
& {\scriptsize **S3:promo:dut:max**} \\
|
||||||
|
\hline S4* & **S4:groupe:dut:note** & **S4:groupe:dut:rang**
|
||||||
|
& {\scriptsize **S4:groupe:dut:min**}
|
||||||
|
& {\scriptsize **S4:groupe:dut:moy**}
|
||||||
|
& {\scriptsize **S4:groupe:dut:max**}
|
||||||
|
& **S4:promo:dut:rang**
|
||||||
|
& {\scriptsize **S4:promo:dut:min**}
|
||||||
|
& {\scriptsize **S4:promo:dut:moy**}
|
||||||
|
& {\scriptsize **S4:promo:dut:max**} \\
|
||||||
|
\hline
|
||||||
|
\hline \cellcolor{black!20} 2A* & **2A:groupe:dut:note** & **2A:groupe:dut:rang**
|
||||||
|
& {\scriptsize **2A:groupe:dut:min**}
|
||||||
|
& {\scriptsize **2A:groupe:dut:moy**}
|
||||||
|
& {\scriptsize **2A:groupe:dut:max**}
|
||||||
|
& **2A:promo:dut:rang**
|
||||||
|
& {\scriptsize **2A:promo:dut:min**}
|
||||||
|
& {\scriptsize **2A:promo:dut:moy**}
|
||||||
|
& {\scriptsize **2A:promo:dut:max**} \\
|
||||||
|
\hline
|
||||||
|
\hline DUT* & **4S:groupe:dut:note** & **4S:groupe:dut:rang**
|
||||||
|
& {\scriptsize **4S:groupe:dut:min**}
|
||||||
|
& {\scriptsize **4S:groupe:dut:moy**}
|
||||||
|
& {\scriptsize **4S:groupe:dut:max**}
|
||||||
|
& **4S:promo:dut:rang**
|
||||||
|
& {\scriptsize **4S:promo:dut:min**}
|
||||||
|
& {\scriptsize **4S:promo:dut:moy**}
|
||||||
|
& {\scriptsize **4S:promo:dut:max**} \\
|
||||||
|
\hline
|
||||||
|
\end{tabular}
|
||||||
|
|
||||||
|
\begin{minipage}{\textwidth}
|
||||||
|
\scriptsize
|
||||||
|
\textbf{Guide de lecture} : * Sur notes disponibles ; \textdagger~Le groupe est l'ensemble des étudiants ayant suivi le même semestre que **prenom** **nom** alors que la promo est l'ensemble des étudiants recevant le diplôme de DUT à la même date que **prenom** **nom** (ayant donc des parcours potentiellement différents)
|
||||||
|
\end{minipage}
|
||||||
|
|
||||||
|
\end{rubrique}
|
||||||
|
|
||||||
|
% ************************************************************
|
||||||
|
% Avis de poursuite d'études manuscrit ou saisi dans les
|
||||||
|
% annotations de l'étudiant
|
||||||
|
% ************************************************************
|
||||||
|
|
||||||
|
\begin{rubrique}{Avis du jury de Poursuites d'Etudes}
|
||||||
|
**annotation**
|
||||||
|
\end{rubrique}
|
||||||
|
|
||||||
|
\newpage % Saut de page
|
||||||
|
% ------------------------------------------------------------
|
||||||
|
|
||||||
|
% ************************************************************
|
||||||
|
% Bilan automatisé par matières
|
||||||
|
% ************************************************************
|
||||||
|
|
||||||
|
\begin{rubrique}{Bilan par matières}
|
||||||
|
**bilanParTag**
|
||||||
|
\end{rubrique}
|
||||||
|
|
||||||
|
% ************************************************************
|
||||||
|
% Signature
|
||||||
|
% ************************************************************
|
||||||
|
|
||||||
|
\begin{rubrique}{Cachet de l'établissement}
|
||||||
|
\begin{flushright}
|
||||||
|
Le~\today,\\
|
||||||
|
**NomResponsablePE**~\\
|
||||||
|
\textit{Responsable des Poursuites d'Études du département **DeptName**}
|
||||||
|
\end{flushright}
|
||||||
|
\vspace{0.5cm}
|
||||||
|
\end{rubrique}
|
||||||
|
|
||||||
|
% Le pied de page (indiqué dans les paramètres ScoDoc) vient après cette ligne
|
|
@ -1,164 +1,178 @@
|
||||||
%% Original : Cléo BARAS
|
|
||||||
%%
|
%%
|
||||||
%% Template LaTeX des avis
|
%% Deux tableaux sur deux pages
|
||||||
|
%%
|
||||||
%%
|
%%
|
||||||
%% Version 1.0
|
|
||||||
%%
|
|
||||||
%% Ce fichier est distribué par ScoDoc
|
|
||||||
%%
|
|
||||||
%% Si vous voulez le modifier sur le serveur, copiez le dans
|
|
||||||
%% ../local/
|
|
||||||
%% et éditez votre copie dans local.
|
|
||||||
%%
|
|
||||||
|
|
||||||
|
|
||||||
% Ce document est n'est pas utilisé si le paramètre eTemplate LaTeX des avis" est rempli.
|
|
||||||
|
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
% En-tête de l'avis
|
\begin{entete}{logos/logo_IUT_Lille}
|
||||||
|
\textbf{\Huge{Avis de Poursuites d'Etudes}} \\
|
||||||
|
\ligne \\
|
||||||
|
\normalsize{Département **DeptFullName**} \\
|
||||||
|
\normalsize{**InstituteName**} \\
|
||||||
|
\end{entete}\\
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
\begin{entete}{logos/header}
|
|
||||||
\textbf{\Huge{Avis de Poursuites d'Etudes}} \\
|
|
||||||
\ligne \\
|
|
||||||
\normalsize{Département **DeptFullName**} \\
|
|
||||||
\normalsize{**InstituteName**} \\
|
|
||||||
\end{entete}
|
|
||||||
|
|
||||||
\begin{nom}
|
\begin{nom}
|
||||||
**sexe** **prenom** **nom** (**age** ans)
|
**sexe** **prenom** **nom** (**age** ans)
|
||||||
\end{nom}
|
\end{nom}\\
|
||||||
|
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
% Parcours scolaire de l'étudiant
|
|
||||||
% ************************************************************
|
|
||||||
|
|
||||||
\begin{rubrique}{Parcours scolaire}
|
\begin{rubrique}{Parcours scolaire}
|
||||||
|
**parcourstimeline**
|
||||||
% TIMELINE
|
|
||||||
**parcourstimeline**
|
|
||||||
|
|
||||||
{
|
|
||||||
\scriptsize
|
|
||||||
\textbf{Guide de lecture} :
|
|
||||||
$\bullet$ Les options de la formation: FI = initiale, UFA = alternance (contrat pro), ENEPS = École nationale de l'enseignement professionnel supérieur
|
|
||||||
}
|
|
||||||
\end{rubrique}
|
\end{rubrique}
|
||||||
|
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
% Bilan scolaire
|
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
|
|
||||||
\begin{rubrique}{Bilan scolaire synthétique}
|
\begin{rubrique}{Bilan scolaire synthétique}
|
||||||
|
\begin{tabular}{|p{0.11\textwidth}|p{0.11\textwidth}|*{8}{p{0.065\textwidth}|}}
|
||||||
|
|
||||||
\begin{tabular}{|p{0.08\textwidth}|p{0.11\textwidth}|*{8}{p{0.07\textwidth}|}}
|
|
||||||
% Titres des colonnes
|
% Titres des colonnes
|
||||||
\hline & \textbf{Resultats} & \multicolumn{4}{c|}{\textbf{Dans le groupe}\textdagger}
|
|
||||||
& \multicolumn{4}{c|}{\textbf{Dans la promo}\textdagger} \\
|
|
||||||
& & Class. & Min & Moy & Max
|
|
||||||
& Class. & Min & Moy & Max \\
|
|
||||||
\hline
|
\hline
|
||||||
\hline S1 & **S1:groupe:dut:note** & **S1:groupe:dut:rang**
|
& & \multicolumn{4}{c|}{\textbf{Dans le groupe}\textdagger}
|
||||||
& {\scriptsize **S1:groupe:dut:min**}
|
& \multicolumn{4}{c|}{\textbf{Dans la promotion}\textdagger} \\
|
||||||
& {\scriptsize **S1:groupe:dut:moy**}
|
Semestres & Résultats & Class. & Min & Moy & Max
|
||||||
& {\scriptsize **S1:groupe:dut:max**}
|
& Class. & Min & Moy & Max \\
|
||||||
& **S1:promo:dut:rang**
|
|
||||||
& {\scriptsize **S1:promo:dut:min**}
|
|
||||||
& {\scriptsize **S1:promo:dut:moy**}
|
|
||||||
& {\scriptsize **S1:promo:dut:max**} \\
|
|
||||||
\hline S2 & **S2:groupe:dut:note** & **S2:groupe:dut:rang**
|
|
||||||
& {\scriptsize **S2:groupe:dut:min**}
|
|
||||||
& {\scriptsize **S2:groupe:dut:moy**}
|
|
||||||
& {\scriptsize **S2:groupe:dut:max**}
|
|
||||||
& **S2:promo:dut:rang**
|
|
||||||
& {\scriptsize **S2:promo:dut:min**}
|
|
||||||
& {\scriptsize **S2:promo:dut:moy**}
|
|
||||||
& {\scriptsize **S2:promo:dut:max**} \\
|
|
||||||
\hline
|
\hline
|
||||||
\hline \cellcolor{black!20} 1A & **1A:groupe:dut:note** & **1A:groupe:dut:rang**
|
\hline S1
|
||||||
& {\scriptsize **1A:groupe:dut:min**}
|
& **S1:groupe:dut:note**
|
||||||
& {\scriptsize **1A:groupe:dut:moy**}
|
& {\scriptsize **S1:groupe:dut:rang**}
|
||||||
& {\scriptsize **1A:groupe:dut:max**}
|
& {\scriptsize **S1:groupe:dut:min**}
|
||||||
& **1A:promo:dut:rang**
|
& {\scriptsize **S1:groupe:dut:moy**}
|
||||||
& {\scriptsize **1A:promo:dut:min**}
|
& {\scriptsize **S1:groupe:dut:max**}
|
||||||
& {\scriptsize **1A:promo:dut:moy**}
|
& {\scriptsize **S1:promo:dut:rang**}
|
||||||
& {\scriptsize **1A:promo:dut:max**} \\
|
& {\scriptsize **S1:promo:dut:min**}
|
||||||
|
& {\scriptsize **S1:promo:dut:moy**}
|
||||||
|
& {\scriptsize **S1:promo:dut:max**} \\
|
||||||
|
\hline S2
|
||||||
|
& **S2:groupe:dut:note**
|
||||||
|
& {\scriptsize **S2:groupe:dut:rang**}
|
||||||
|
& {\scriptsize **S2:groupe:dut:min**}
|
||||||
|
& {\scriptsize **S2:groupe:dut:moy**}
|
||||||
|
& {\scriptsize **S2:groupe:dut:max**}
|
||||||
|
& {\scriptsize **S2:promo:dut:rang**}
|
||||||
|
& {\scriptsize **S2:promo:dut:min**}
|
||||||
|
& {\scriptsize **S2:promo:dut:moy**}
|
||||||
|
& {\scriptsize **S2:promo:dut:max**} \\
|
||||||
|
\hline S3
|
||||||
|
& **S3:groupe:dut:note**
|
||||||
|
& {\scriptsize **S3:groupe:dut:rang**}
|
||||||
|
& {\scriptsize **S3:groupe:dut:min**}
|
||||||
|
& {\scriptsize **S3:groupe:dut:moy**}
|
||||||
|
& {\scriptsize **S3:groupe:dut:max**}
|
||||||
|
& {\scriptsize **S3:promo:dut:rang**}
|
||||||
|
& {\scriptsize **S3:promo:dut:min**}
|
||||||
|
& {\scriptsize **S3:promo:dut:moy**}
|
||||||
|
& {\scriptsize **S3:promo:dut:max**} \\
|
||||||
\hline
|
\hline
|
||||||
\hline S3 & **S3:groupe:dut:note** & **S3:groupe:dut:rang**
|
\end{tabular}\\
|
||||||
& {\scriptsize **S3:groupe:dut:min**}
|
\begin{minipage}{0.9\textwidth}
|
||||||
& {\scriptsize **S3:groupe:dut:moy**}
|
\scriptsize
|
||||||
& {\scriptsize **S3:groupe:dut:max**}
|
\textbf{Guide de lecture} : %* Sur notes disponibles ;
|
||||||
& **S3:promo:dut:rang**
|
\textdagger~Le groupe est l'ensemble des étudiants ayant suivi le même semestre que **prenom** **nom** alors que la promo est l'ensemble des étudiants recevant le diplôme de DUT à la même date que **prenom** **nom** (ayant donc des parcours potentiellement différents)
|
||||||
& {\scriptsize **S3:promo:dut:min**}
|
|
||||||
& {\scriptsize **S3:promo:dut:moy**}
|
|
||||||
& {\scriptsize **S3:promo:dut:max**} \\
|
|
||||||
\hline S4* & **S4:groupe:dut:note** & **S4:groupe:dut:rang**
|
|
||||||
& {\scriptsize **S4:groupe:dut:min**}
|
|
||||||
& {\scriptsize **S4:groupe:dut:moy**}
|
|
||||||
& {\scriptsize **S4:groupe:dut:max**}
|
|
||||||
& **S4:promo:dut:rang**
|
|
||||||
& {\scriptsize **S4:promo:dut:min**}
|
|
||||||
& {\scriptsize **S4:promo:dut:moy**}
|
|
||||||
& {\scriptsize **S4:promo:dut:max**} \\
|
|
||||||
\hline
|
|
||||||
\hline \cellcolor{black!20} 2A* & **2A:groupe:dut:note** & **2A:groupe:dut:rang**
|
|
||||||
& {\scriptsize **2A:groupe:dut:min**}
|
|
||||||
& {\scriptsize **2A:groupe:dut:moy**}
|
|
||||||
& {\scriptsize **2A:groupe:dut:max**}
|
|
||||||
& **2A:promo:dut:rang**
|
|
||||||
& {\scriptsize **2A:promo:dut:min**}
|
|
||||||
& {\scriptsize **2A:promo:dut:moy**}
|
|
||||||
& {\scriptsize **2A:promo:dut:max**} \\
|
|
||||||
\hline
|
|
||||||
\hline DUT* & **4S:groupe:dut:note** & **4S:groupe:dut:rang**
|
|
||||||
& {\scriptsize **4S:groupe:dut:min**}
|
|
||||||
& {\scriptsize **4S:groupe:dut:moy**}
|
|
||||||
& {\scriptsize **4S:groupe:dut:max**}
|
|
||||||
& **4S:promo:dut:rang**
|
|
||||||
& {\scriptsize **4S:promo:dut:min**}
|
|
||||||
& {\scriptsize **4S:promo:dut:moy**}
|
|
||||||
& {\scriptsize **4S:promo:dut:max**} \\
|
|
||||||
\hline
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
\begin{minipage}{\textwidth}
|
|
||||||
\scriptsize
|
|
||||||
\textbf{Guide de lecture} : * Sur notes disponibles ; \textdagger~Le groupe est l'ensemble des étudiants ayant suivi le même semestre que **prenom** **nom** alors que la promo est l'ensemble des étudiants recevant le diplôme de DUT à la même date que **prenom** **nom** (ayant donc des parcours potentiellement différents)
|
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
|
\end{rubrique}\\
|
||||||
\end{rubrique}
|
|
||||||
|
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
% Avis de poursuite d'études manuscrit ou saisi dans les
|
\def\CaseACocher{\ensuremath{\;\begin{tikzpicture} \draw (0,0) rectangle (0.4,0.4); \end{tikzpicture}\;}}
|
||||||
% annotations de l'étudiant
|
\def\cg{\cellcolor{black!20}}
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
|
\begin{rubrique}{Avis du jury de Poursuites d'Études}
|
||||||
|
|
||||||
\begin{rubrique}{Avis du jury de Poursuites d'Etudes}
|
|
||||||
**annotation**
|
**annotation**
|
||||||
\end{rubrique}
|
\end{rubrique}
|
||||||
|
|
||||||
\newpage % Saut de page
|
|
||||||
% ------------------------------------------------------------
|
|
||||||
|
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
% Bilan automatisé par matières
|
\newpage
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
|
\begin{rubrique}{Bilan par matières de **sexe** **prenom** **nom** }
|
||||||
|
\begin{center}
|
||||||
|
\def\si#1{\scriptsize \textit{#1}}
|
||||||
|
\begin{tabular}{|p{100mm}||c|c|c|c|}
|
||||||
|
\hline
|
||||||
|
& \textbf{S1} & \textbf{S2} & \textbf{S3} & \textbf{S1+S2+S3} \\
|
||||||
|
\hline\hline
|
||||||
|
\textbf{électrotechnique}
|
||||||
|
& **S1:groupe:electrotechnique:note** & **S2:groupe:electrotechnique:note**
|
||||||
|
& **S3:groupe:electrotechnique:note** & **3S:groupe:electrotechnique:note** \\
|
||||||
|
& \si{**S1:groupe:electrotechnique:rang**} & \si{**S2:groupe:electrotechnique:rang**}
|
||||||
|
& \si{**S3:groupe:electrotechnique:rang**} & \si{**3S:groupe:electrotechnique:rang**} \\
|
||||||
|
\hline
|
||||||
|
\textbf{électronique}
|
||||||
|
& **S1:groupe:electronique:note** & **S2:groupe:electronique:note**
|
||||||
|
& **S3:groupe:electronique:note** & **3S:groupe:electronique:note** \\
|
||||||
|
& \si{**S1:groupe:electronique:rang**} & \si{**S2:groupe:electronique:rang**}
|
||||||
|
& \si{**S3:groupe:electronique:rang**} & \si{**3S:groupe:electronique:rang**} \\
|
||||||
|
\hline
|
||||||
|
\textbf{automatisme et informatique industrielle}
|
||||||
|
& **S1:groupe:automatisme et informatique industrielle:note** & **S2:groupe:automatisme et informatique industrielle:note**
|
||||||
|
& **S3:groupe:automatisme et informatique industrielle:note** & **3S:groupe:automatisme et informatique industrielle:note** \\
|
||||||
|
& \si{**S1:groupe:automatisme et informatique industrielle:rang**} & \si{**S2:groupe:automatisme et informatique industrielle:rang**}
|
||||||
|
& \si{**S3:groupe:automatisme et informatique industrielle:rang**} & \si{**3S:groupe:automatisme et informatique industrielle:rang**} \\
|
||||||
|
\hline
|
||||||
|
\textbf{projets et réalisations}
|
||||||
|
& **S1:groupe:projets et realisations:note** & **S2:groupe:projets et realisations:note**
|
||||||
|
& **S3:groupe:projets et realisations:note** & **3S:groupe:projets et realisations:note** \\
|
||||||
|
& \si{**S1:groupe:projets et realisations:rang**} & \si{**S2:groupe:projets et realisations:rang**}
|
||||||
|
& \si{**S3:groupe:projets et realisations:rang**} & \si{**3S:groupe:projets et realisations:rang**} \\
|
||||||
|
\hline
|
||||||
|
\textbf{connaissances et compétences générales}
|
||||||
|
& **S1:groupe:connaissances et competences generales:note** & **S2:groupe:connaissances et competences generales:note**
|
||||||
|
& **S3:groupe:connaissances et competences generales:note** & **3S:groupe:connaissances et competences generales:note** \\
|
||||||
|
& \si{**S1:groupe:connaissances et competences generales:rang**} & \si{**S2:groupe:connaissances et competences generales:rang**}
|
||||||
|
& \si{**S3:groupe:connaissances et competences generales:rang**} & \si{**3S:groupe:connaissances et competences generales:rang**} \\
|
||||||
|
\hline
|
||||||
|
\textbf{anglais}
|
||||||
|
& **S1:groupe:anglais:note** & **S2:groupe:anglais:note**
|
||||||
|
& **S3:groupe:anglais:note** & **3S:groupe:anglais:note** \\
|
||||||
|
& \si{**S1:groupe:anglais:rang**} & \si{**S2:groupe:anglais:rang**}
|
||||||
|
& \si{**S3:groupe:anglais:rang**} & \si{**3S:groupe:anglais:rang**} \\
|
||||||
|
\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
\begin{rubrique}{Bilan par matières}
|
|
||||||
**bilanParTag**
|
|
||||||
\end{rubrique}
|
\end{rubrique}
|
||||||
|
|
||||||
% ************************************************************
|
% ************************************************************
|
||||||
% Signature
|
\vfill
|
||||||
% ************************************************************
|
%%%%%%%%%%%%%%%%
|
||||||
|
\def\unecaselargescriptsize#1{\multicolumn{2}{l}{{\scriptsize #1}}\\ }
|
||||||
\begin{rubrique}{Cachet de l'établissement}
|
\begin{rubrique}{Cachet de l'établissement}
|
||||||
\begin{flushright}
|
\vspace{-10mm}
|
||||||
Le~\today,\\
|
\begin{center}
|
||||||
**NomResponsablePE**~\\
|
\begin{tabular}{|*{2}{p{0.45\textwidth}|}}
|
||||||
\textit{Responsable des Poursuites d'Études du département **DeptName**}
|
\hline
|
||||||
\end{flushright}
|
Pour le Chef du Département
|
||||||
\vspace{0.5cm}
|
&
|
||||||
|
Pour l'administrateur provisoire de l'IUT
|
||||||
|
\\
|
||||||
|
et par délégation,
|
||||||
|
&
|
||||||
|
et par délégation,
|
||||||
|
\\
|
||||||
|
Jocelyne \textsc{Creton Nutten},
|
||||||
|
&
|
||||||
|
Vincent \textsc{Devlaminck},
|
||||||
|
\\
|
||||||
|
\textit{Responsable des Poursuites d'Études }
|
||||||
|
&
|
||||||
|
\textit{chargé de mission}
|
||||||
|
\\
|
||||||
|
\textit{du département GEII}
|
||||||
|
&
|
||||||
|
\textit{en charge de la Scolarité}
|
||||||
|
\\[15mm]
|
||||||
|
&\\ \hline
|
||||||
|
%%%%%%%%%%%%%%%%%
|
||||||
|
\unecaselargescriptsize{
|
||||||
|
IUT A de Lille ---
|
||||||
|
Av Paul Langevin - Cité scientifique - BP 90179 --- 59653 Villeneuve d'Ascq Cedex --- France
|
||||||
|
}
|
||||||
|
\unecaselargescriptsize{
|
||||||
|
\textbf{Secrétariat Département GEII}:
|
||||||
|
}
|
||||||
|
\unecaselargescriptsize{
|
||||||
|
Mme Séverine \textsc{Derenchy}, Tel (+33)3.59.63.21.91, \texttt{severine.derenchy@univ-lille.fr}
|
||||||
|
}
|
||||||
|
\unecaselargescriptsize{
|
||||||
|
\textbf{Responsable Poursuites d'Études Département GEII}:
|
||||||
|
}
|
||||||
|
\unecaselargescriptsize{
|
||||||
|
Mme Jocelyne \textsc{Creton Nutten}, \texttt{Jocelyne.Creton@univ-lille.fr}
|
||||||
|
}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
\end{rubrique}
|
\end{rubrique}
|
||||||
|
% ************************************************************
|
||||||
% Le pied de page (indiqué dans les paramètres ScoDoc) vient après cette ligne
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
\begin{minipage}{\textwidth} \scriptsize
|
||||||
|
%IUT exemple - Dpt RT, 3 rue xxx, France
|
||||||
|
|
||||||
|
% \textbf{Secrétariat Poursuite d'Etudes}: Xxx Yyy, Tel 01.02.03.04.05, xxx.yyy@example.com
|
||||||
|
|
||||||
|
% \textbf{Responsables Poursuite d'Etudes RT}: Zzz Wwww, Tel 01.02.03.04.05, zzz.www@example.com
|
||||||
|
\end{minipage}
|
|
@ -1,7 +0,0 @@
|
||||||
\begin{minipage}{\textwidth} \scriptsize
|
|
||||||
%IUT exemple - Dpt RT, 3 rue xxx, France
|
|
||||||
|
|
||||||
% \textbf{Secrétariat Poursuite d'Etudes}: Xxx Yyy, Tel 01.02.03.04.05, xxx.yyy@example.com
|
|
||||||
|
|
||||||
% \textbf{Responsables Poursuite d'Etudes RT}: Zzz Wwww, Tel 01.02.03.04.05, zzz.www@example.com
|
|
||||||
\end{minipage}
|
|
Loading…
Reference in New Issue