forked from ScoDoc/ScoDoc
Compare commits
5 Commits
master
...
IDETCLASSM
Author | SHA1 | Date | |
---|---|---|---|
43ad66fb8c | |||
|
ad63dcbbdd | ||
0743741314 | |||
43a5ddc6f4 | |||
49b3e91bb3 |
@ -760,6 +760,6 @@ def tf_error_message(msg):
|
||||
if type(msg) == StringType:
|
||||
msg = [msg]
|
||||
return (
|
||||
'<ul class="tf-msg"><li class="tf-msg">%s</li></ul>'
|
||||
'<ul class="tf-msg"><li id="error-message" class="tf-msg">%s</li></ul>'
|
||||
% '</li><li class="tf-msg">'.join(msg)
|
||||
)
|
||||
|
@ -376,7 +376,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
|
||||
|
||||
if editable:
|
||||
H.append(
|
||||
"""<p><a class="stdlink" href="formation_create">Créer une formation</a></p>
|
||||
"""<p><a class="stdlink" href="formation_create" id="link-create-formation">Créer une formation</a></p>
|
||||
<p><a class="stdlink" href="formation_import_xml_form">Importer une formation (xml)</a></p>
|
||||
<p class="help">Une "formation" est un programme pédagogique structuré en UE, matières et modules. Chaque semestre se réfère à une formation. La modification d'une formation affecte tous les semestres qui s'y réfèrent.</p>
|
||||
"""
|
||||
|
@ -898,7 +898,9 @@ subversion: %(svn_version)s
|
||||
# aucun departement defini: aide utilisateur
|
||||
H.append("<p>Aucun département à ajouter !</p>")
|
||||
else:
|
||||
H.append("""<form action="create_dept"><select name="DeptId"/>""")
|
||||
H.append(
|
||||
"""<form action="create_dept" ><select id="create-dept" name="DeptId"/>"""
|
||||
)
|
||||
for deptId in addableDepts:
|
||||
H.append("""<option value="%s">%s</option>""" % (deptId, deptId))
|
||||
H.append(
|
||||
@ -915,7 +917,7 @@ subversion: %(svn_version)s
|
||||
(le site peut donc être recréé sans perte de données).
|
||||
</p>
|
||||
<form action="delete_dept">
|
||||
<select name="DeptId">
|
||||
<select name="DeptId" id= "delete-dept">
|
||||
"""
|
||||
)
|
||||
for deptFolder in self._list_depts():
|
||||
|
@ -143,7 +143,7 @@ class ZScoUsers(
|
||||
|
||||
if authuser.has_permission(ScoUsersAdmin, self):
|
||||
H.append(
|
||||
'<p><a href="create_user_form" class="stdlink">Ajouter un utilisateur</a>'
|
||||
'<p><a id="create-user" href="create_user_form" class="stdlink">Ajouter un utilisateur</a>'
|
||||
)
|
||||
H.append(
|
||||
' <a href="import_users_form" class="stdlink">Importer des utilisateurs</a></p>'
|
||||
|
@ -55,9 +55,9 @@ def sidebar_common(context, REQUEST=None):
|
||||
% params,
|
||||
context.sidebar_dept(REQUEST),
|
||||
"""<h2 class="insidebar">Scolarité</h2>
|
||||
<a href="%(ScoURL)s" class="sidebar">Semestres</a> <br/>
|
||||
<a href="%(NotesURL)s" class="sidebar">Programmes</a> <br/>
|
||||
<a href="%(AbsencesURL)s" class="sidebar">Absences</a> <br/>
|
||||
<a href="%(ScoURL)s" id="link-semestre" class="sidebar">Semestres</a> <br/>
|
||||
<a href="%(NotesURL)s" id="link-programmes" class="sidebar">Programmes</a> <br/>
|
||||
<a href="%(AbsencesURL)s" id="link-absence" class="sidebar">Absences</a> <br/>
|
||||
"""
|
||||
% params,
|
||||
]
|
||||
@ -66,12 +66,13 @@ def sidebar_common(context, REQUEST=None):
|
||||
ScoUsersView, context
|
||||
):
|
||||
H.append(
|
||||
"""<a href="%(UsersURL)s" class="sidebar">Utilisateurs</a> <br/>""" % params
|
||||
"""<a id = "utilisateurs_Vue"href="%(UsersURL)s" class="sidebar">Utilisateurs</a> <br/>"""
|
||||
% params
|
||||
)
|
||||
|
||||
if authuser.has_permission(ScoChangePreferences, context):
|
||||
H.append(
|
||||
"""<a href="%(ScoURL)s/edit_preferences" class="sidebar">Paramétrage</a> <br/>"""
|
||||
"""<a id="link-preferences" href="%(ScoURL)s/edit_preferences" class="sidebar">Paramétrage</a> <br/>"""
|
||||
% params
|
||||
)
|
||||
|
||||
@ -104,6 +105,7 @@ def sidebar(context, REQUEST=None):
|
||||
"""<h2 id="insidebar-etud"><a href="%(ScoURL)s/ficheEtud?etudid=%(etudid)s" class="sidebar">
|
||||
<font color="#FF0000">%(civilite_str)s %(nom_disp)s</font></a>
|
||||
</h2>
|
||||
<p id ="euid">%(etudid)s</p>
|
||||
<b>Absences</b>"""
|
||||
% params
|
||||
)
|
||||
@ -123,21 +125,21 @@ def sidebar(context, REQUEST=None):
|
||||
if REQUEST.AUTHENTICATED_USER.has_permission(ScoAbsChange, context):
|
||||
H.append(
|
||||
"""
|
||||
<li> <a href="%(ScoURL)s/Absences/SignaleAbsenceEtud?etudid=%(etudid)s">Ajouter</a></li>
|
||||
<li> <a href="%(ScoURL)s/Absences/JustifAbsenceEtud?etudid=%(etudid)s">Justifier</a></li>
|
||||
<li> <a href="%(ScoURL)s/Absences/AnnuleAbsenceEtud?etudid=%(etudid)s">Supprimer</a></li>
|
||||
<li> <a id="add-absence" href="%(ScoURL)s/Absences/SignaleAbsenceEtud?etudid=%(etudid)s">Ajouter</a></li>
|
||||
<li> <a id="justify-absence" href="%(ScoURL)s/Absences/JustifAbsenceEtud?etudid=%(etudid)s">Justifier</a></li>
|
||||
<li> <a id="delete-absence" href="%(ScoURL)s/Absences/AnnuleAbsenceEtud?etudid=%(etudid)s">Supprimer</a></li>
|
||||
"""
|
||||
% params
|
||||
)
|
||||
if context.get_preference("handle_billets_abs"):
|
||||
H.append(
|
||||
"""<li> <a href="%(ScoURL)s/Absences/listeBilletsEtud?etudid=%(etudid)s">Billets</a></li>"""
|
||||
"""<li> <a id="display-billet" href="%(ScoURL)s/Absences/listeBilletsEtud?etudid=%(etudid)s">Billets</a></li>"""
|
||||
% params
|
||||
)
|
||||
H.append(
|
||||
"""
|
||||
<li> <a href="%(ScoURL)s/Absences/CalAbs?etudid=%(etudid)s">Calendrier</a></li>
|
||||
<li> <a href="%(ScoURL)s/Absences/ListeAbsEtud?etudid=%(etudid)s">Liste</a></li>
|
||||
<li> <a id="display-calendar" href="%(ScoURL)s/Absences/CalAbs?etudid=%(etudid)s">Calendrier</a></li>
|
||||
<li> <a id="display-list-absence" href="%(ScoURL)s/Absences/ListeAbsEtud?etudid=%(etudid)s">Liste</a></li>
|
||||
</ul>
|
||||
"""
|
||||
% params
|
||||
|
@ -422,7 +422,7 @@ class ApoEtud(dict):
|
||||
# Elements UE
|
||||
decisions_ue = nt.get_etud_decision_ues(etudid)
|
||||
for ue in nt.get_ues():
|
||||
if ue["code_apogee"] == code:
|
||||
if code in ue["code_apogee"].split(","):
|
||||
if self.export_res_ues:
|
||||
if decisions_ue and ue["ue_id"] in decisions_ue:
|
||||
ue_status = nt.get_etud_ue_status(etudid, ue["ue_id"])
|
||||
@ -443,7 +443,7 @@ class ApoEtud(dict):
|
||||
modimpls = nt.get_modimpls()
|
||||
module_code_found = False
|
||||
for modimpl in modimpls:
|
||||
if modimpl["module"]["code_apogee"] == code:
|
||||
if code in modimpl["module"]["code_apogee"].split(","):
|
||||
n = nt.get_etud_mod_moy(modimpl["moduleimpl_id"], etudid)
|
||||
if n != "NI" and self.export_res_modules:
|
||||
return dict(N=_apo_fmt_note(n), B=20, J="", R="")
|
||||
@ -972,13 +972,13 @@ class ApoData:
|
||||
self.context, sem["formsemestre_id"]
|
||||
)
|
||||
for ue in nt.get_ues():
|
||||
if ue["code_apogee"] == code:
|
||||
if code in ue["code_apogee"].split(","):
|
||||
s.add(code)
|
||||
continue
|
||||
# associé à un module:
|
||||
modimpls = nt.get_modimpls()
|
||||
for modimpl in modimpls:
|
||||
if modimpl["module"]["code_apogee"] == code:
|
||||
if code in modimpl["module"]["code_apogee"].split(","):
|
||||
s.add(code)
|
||||
continue
|
||||
# log('codes_by_sem=%s' % pprint.pformat(codes_by_sem))
|
||||
|
@ -143,7 +143,7 @@ Chercher étape courante: <input name="etape_apo" type="text" size="8" spellchec
|
||||
"""<hr>
|
||||
<h3>Gestion des étudiants</h3>
|
||||
<ul>
|
||||
<li><a class="stdlink" href="etudident_create_form">créer <em>un</em> nouvel étudiant</a></li>
|
||||
<li><a class="stdlink" id="link-create-student" href="etudident_create_form">créer <em>un</em> nouvel étudiant</a></li>
|
||||
<li><a class="stdlink" href="form_students_import_excel">importer de nouveaux étudiants</a> (ne pas utiliser sauf cas particulier, utilisez plutôt le lien dans
|
||||
le tableau de bord semestre si vous souhaitez inscrire les
|
||||
étudiants importés à un semestre)</li>
|
||||
|
@ -154,7 +154,7 @@ def module_create(context, matiere_id=None, REQUEST=None):
|
||||
{
|
||||
"title": "Code Apogée",
|
||||
"size": 15,
|
||||
"explanation": "code élément pédagogique Apogée (optionnel)",
|
||||
"explanation": "code élément pédagogique Apogée (optionnel) ou liste de codes ELP séparés par une virgule",
|
||||
},
|
||||
),
|
||||
(
|
||||
@ -355,7 +355,7 @@ def module_edit(context, module_id=None, REQUEST=None):
|
||||
{
|
||||
"title": "Code Apogée",
|
||||
"size": 15,
|
||||
"explanation": "code élément pédagogique Apogée (optionnel)",
|
||||
"explanation": "code élément pédagogique Apogée (optionnel) ou liste de codes ELP séparés par une virgule",
|
||||
},
|
||||
),
|
||||
(
|
||||
|
@ -147,7 +147,7 @@ def ue_edit(context, ue_id=None, create=False, formation_id=None, REQUEST=None):
|
||||
{
|
||||
"title": "Code Apogée",
|
||||
"size": 15,
|
||||
"explanation": "code élément pédagogique Apogée (optionnel)",
|
||||
"explanation": "code élément pédagogique Apogée (optionnel) ou liste de codes ELP séparés par une virgule",
|
||||
},
|
||||
),
|
||||
]
|
||||
|
@ -58,7 +58,7 @@ def form_search_etud(
|
||||
H.append(
|
||||
"""<form action="search_etud_in_dept" method="POST">
|
||||
<b>%s</b>
|
||||
<input type="text" name="expnom" width="12" spellcheck="false" value="">
|
||||
<input type="text" name="expnom" id="search-student" width="12" spellcheck="false" value="">
|
||||
<input type="submit" value="Chercher">
|
||||
<br/>(entrer une partie du nom)
|
||||
"""
|
||||
|
@ -229,6 +229,7 @@ def formation_list_table(context, formation_id=None, args={}, REQUEST=None):
|
||||
f["parcours_name"] = ""
|
||||
f["_titre_target"] = "ue_list?formation_id=%(formation_id)s" % f
|
||||
f["_titre_link_class"] = "stdlink"
|
||||
f["_titre_id"] = "titre-%s" % f["acronyme"]
|
||||
# Ajoute les semestres associés à chaque formation:
|
||||
f["sems"] = sco_formsemestre.do_formsemestre_list(
|
||||
context, args={"formation_id": f["formation_id"]}
|
||||
@ -241,8 +242,8 @@ def formation_list_table(context, formation_id=None, args={}, REQUEST=None):
|
||||
for s in f["sems"]
|
||||
]
|
||||
+ [
|
||||
'<a class="stdlink" href="formsemestre_createwithmodules?formation_id=%(formation_id)s&semestre_id=1">ajouter</a>'
|
||||
% f
|
||||
'<a class="stdlink" id="add-semestre-%s" href="formsemestre_createwithmodules?formation_id=%s&semestre_id=1">ajouter</a>'
|
||||
% (f["acronyme"].lower(), f["formation_id"])
|
||||
]
|
||||
)
|
||||
if f["sems"]:
|
||||
@ -259,15 +260,15 @@ def formation_list_table(context, formation_id=None, args={}, REQUEST=None):
|
||||
but_locked = '<span class="but_placeholder"></span>'
|
||||
if editable and not locked:
|
||||
but_suppr = (
|
||||
'<a class="stdlink" href="formation_delete?formation_id=%s">%s</a>'
|
||||
% (f["formation_id"], suppricon)
|
||||
'<a class="stdlink" id="delete-formation-%s" href="formation_delete?formation_id=%s">%s</a>'
|
||||
% (f["acronyme"], f["formation_id"], suppricon)
|
||||
)
|
||||
else:
|
||||
but_suppr = '<span class="but_placeholder"></span>'
|
||||
if editable:
|
||||
but_edit = (
|
||||
'<a class="stdlink" href="formation_edit?formation_id=%s">%s</a>'
|
||||
% (f["formation_id"], editicon)
|
||||
'<a class="stdlink" id="edit-formation-%s" href="formation_edit?formation_id=%s">%s</a>'
|
||||
% (f["acronyme"], f["formation_id"], editicon)
|
||||
)
|
||||
else:
|
||||
but_edit = '<span class="but_placeholder"></span>'
|
||||
|
@ -147,9 +147,14 @@ def formsemestre_inscription_with_modules_form(
|
||||
if (not only_ext) or (sem["modalite"] == "EXT"):
|
||||
H.append(
|
||||
"""
|
||||
<li><a class="stdlink" href="formsemestre_inscription_with_modules?etudid=%s&formsemestre_id=%s">%s</a>
|
||||
<li><a class="stdlink" id="inscription-semestre-%s" href="formsemestre_inscription_with_modules?etudid=%s&formsemestre_id=%s">%s</a>
|
||||
"""
|
||||
% (etudid, sem["formsemestre_id"], sem["titremois"])
|
||||
% (
|
||||
sem["formsemestre_id"],
|
||||
etudid,
|
||||
sem["formsemestre_id"],
|
||||
sem["titremois"],
|
||||
)
|
||||
)
|
||||
H.append("</ul>")
|
||||
else:
|
||||
|
@ -401,9 +401,9 @@ def formsemestre_validation_etud_manu(
|
||||
def _redirect_valid_choice(
|
||||
formsemestre_id, etudid, Se, choice, desturl, sortcol, REQUEST
|
||||
):
|
||||
adr = (
|
||||
"formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s&check=1"
|
||||
% (formsemestre_id, etudid)
|
||||
adr = "formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s&check=1" % (
|
||||
formsemestre_id,
|
||||
etudid,
|
||||
)
|
||||
if sortcol:
|
||||
adr += "&sortcol=" + sortcol
|
||||
@ -454,8 +454,8 @@ def decisions_possible_rows(Se, assiduite, subtitle="", trclass=""):
|
||||
H.append("<th>Code %s</th><th>Devenir</th></tr>" % TitleCur)
|
||||
for ch in choices:
|
||||
H.append(
|
||||
"""<tr class="%s"><td title="règle %s"><input type="radio" name="codechoice" value="%s" onClick="document.getElementById('subut').disabled=false;">"""
|
||||
% (trclass, ch.rule_id, ch.codechoice)
|
||||
"""<tr class="%s"><td title="règle %s"><input type="radio" name="codechoice" value="%s" id="input-choice-%s" onClick="document.getElementById('subut').disabled=false;">"""
|
||||
% (trclass, ch.rule_id, ch.codechoice, ch.rule_id)
|
||||
)
|
||||
H.append("%s </input></td>" % ch.explication)
|
||||
if Se.prev:
|
||||
@ -640,8 +640,13 @@ def formsemestre_recap_parcours_table(
|
||||
# log('')
|
||||
|
||||
H.append(
|
||||
'<td class="%s" title="%s">%s</td>'
|
||||
% (class_ue, " ".join(explanation_ue), scu.fmt_note(moy_ue))
|
||||
'<td class="%s" id="ue-%s" title="%s">%s</td>'
|
||||
% (
|
||||
class_ue,
|
||||
ue["acronyme"],
|
||||
" ".join(explanation_ue),
|
||||
scu.fmt_note(moy_ue),
|
||||
)
|
||||
)
|
||||
if len(ues) < Se.nb_max_ue:
|
||||
H.append('<td colspan="%d"></td>' % (Se.nb_max_ue - len(ues)))
|
||||
@ -677,7 +682,7 @@ def formsemestre_recap_parcours_table(
|
||||
for ue in ues:
|
||||
ue_status = nt.get_etud_ue_status(etudid, ue["ue_id"])
|
||||
H.append(
|
||||
'<td class="ue">%g <span class="ects_fond">%g</span></td>'
|
||||
'<td class="ue">%g<span class="ects_fond">%g</span></td>'
|
||||
% (ue_status["ects_pot"], ue_status["ects_pot_fond"])
|
||||
)
|
||||
H.append("<td></td></tr>")
|
||||
|
@ -321,7 +321,7 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
|
||||
top_table_links = ""
|
||||
if sem["etat"] == "1": # non verrouillé
|
||||
top_table_links = (
|
||||
"""<a class="stdlink" href="evaluation_create?moduleimpl_id=%(moduleimpl_id)s">Créer nouvelle évaluation</a>
|
||||
"""<a class="stdlink" id="link-add-evaluation" href="evaluation_create?moduleimpl_id=%(moduleimpl_id)s">Créer nouvelle évaluation</a>
|
||||
<a class="stdlink" style="margin-left:2em;" href="module_evaluation_renumber?moduleimpl_id=%(moduleimpl_id)s&redirect=1">Trier par date</a>
|
||||
"""
|
||||
% M
|
||||
@ -360,11 +360,18 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
|
||||
"""<a href="evaluation_edit?evaluation_id=%(evaluation_id)s" class="mievr_evalnodate">Evaluation sans date</a>"""
|
||||
% eval
|
||||
)
|
||||
H.append(" <em>%(description)s</em>" % eval)
|
||||
H.append(
|
||||
" <em id="
|
||||
"%(description)s"
|
||||
">%(description)s</em>" % eval
|
||||
)
|
||||
if eval["evaluation_type"] == EVALUATION_RATTRAPAGE:
|
||||
H.append(
|
||||
"""<span class="mievr_rattr" title="remplace si meilleure note">rattrapage</span>"""
|
||||
)
|
||||
H.append(
|
||||
"<div id='hidden-id' style='visibility:hidden'>%(evaluation_id)s</div>"
|
||||
)
|
||||
elif eval["evaluation_type"] == EVALUATION_SESSION2:
|
||||
H.append(
|
||||
"""<span class="mievr_rattr" title="remplace autres notes">session 2</span>"""
|
||||
@ -453,7 +460,14 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
|
||||
"""<a class="smallbutton" href="evaluation_delete?evaluation_id=%(evaluation_id)s">"""
|
||||
% eval
|
||||
)
|
||||
H.append(scu.icontag("delete_img", alt="supprimer", title="Supprimer"))
|
||||
H.append(
|
||||
scu.icontag(
|
||||
"delete_img",
|
||||
alt="supprimer",
|
||||
title="Supprimer",
|
||||
id="button-delete-%s" % eval["evaluation_id"],
|
||||
)
|
||||
)
|
||||
if caneditevals:
|
||||
H.append("""</a>""")
|
||||
elif etat["evalcomplete"]:
|
||||
|
@ -74,27 +74,21 @@ def _menuScolarite(context, authuser, sem, etudid):
|
||||
|
||||
if ins["etat"] != "D":
|
||||
dem_title = "Démission"
|
||||
dem_url = (
|
||||
"formDem?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s" % args
|
||||
)
|
||||
dem_url = "formDem?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s" % args
|
||||
else:
|
||||
dem_title = "Annuler la démission"
|
||||
dem_url = (
|
||||
"doCancelDem?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s"
|
||||
% args
|
||||
"doCancelDem?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s" % args
|
||||
)
|
||||
|
||||
# Note: seul un etudiant inscrit (I) peut devenir défaillant.
|
||||
if ins["etat"] != sco_codes_parcours.DEF:
|
||||
def_title = "Déclarer défaillance"
|
||||
def_url = (
|
||||
"formDef?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s" % args
|
||||
)
|
||||
def_url = "formDef?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s" % args
|
||||
elif ins["etat"] == sco_codes_parcours.DEF:
|
||||
def_title = "Annuler la défaillance"
|
||||
def_url = (
|
||||
"doCancelDef?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s"
|
||||
% args
|
||||
"doCancelDef?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s" % args
|
||||
)
|
||||
def_enabled = (
|
||||
(ins["etat"] != "D")
|
||||
@ -430,16 +424,16 @@ def ficheEtud(context, etudid=None, REQUEST=None):
|
||||
<div class="fichesituation">
|
||||
<div class="fichetablesitu">
|
||||
<table>
|
||||
<tr><td class="fichetitre2">Situation :</td><td>%(situation)s</td></tr>
|
||||
<tr><td class="fichetitre2">Situation :</td><td id="student-situation">%(situation)s</td></tr>
|
||||
%(groupes_row)s
|
||||
<tr><td class="fichetitre2">Né%(ne)s le :</td><td>%(info_naissance)s</td></tr>
|
||||
<tr><td class="fichetitre2">Né%(ne)s le :</td><td id="student-birth">%(info_naissance)s</td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
<!-- Adresse -->
|
||||
<div class="ficheadresse" id="ficheadresse">
|
||||
<table><tr>
|
||||
<td class="fichetitre2">Adresse :</td><td> %(domicile)s %(codepostaldomicile)s %(villedomicile)s %(paysdomicile)s
|
||||
<td class="fichetitre2">Adresse :</td><td id="student-adress"> %(domicile)s %(codepostaldomicile)s %(villedomicile)s %(paysdomicile)s
|
||||
%(modifadresse)s
|
||||
%(telephones)s
|
||||
</td></tr></table>
|
||||
|
@ -361,7 +361,8 @@ def _check_duplicate_code(cnx, args, code_name, context, edit=True, REQUEST=None
|
||||
parameters = {}
|
||||
if context:
|
||||
err_page = context.confirmDialog(
|
||||
message="""<h3>Code étudiant (%s) dupliqué !</h3>""" % code_name,
|
||||
message="""<h3 class="title-error">Code étudiant (%s) dupliqué !</h3>"""
|
||||
% code_name,
|
||||
helpmsg="""Le %s %s est déjà utilisé: un seul étudiant peut avoir ce code. Vérifier votre valeur ou supprimer l'autre étudiant avec cette valeur.<p><ul><li>"""
|
||||
% (code_name, args[code_name])
|
||||
+ "</li><li>".join(listh)
|
||||
@ -372,7 +373,10 @@ def _check_duplicate_code(cnx, args, code_name, context, edit=True, REQUEST=None
|
||||
REQUEST=REQUEST,
|
||||
)
|
||||
else:
|
||||
err_page = """<h3>Code étudiant (%s) dupliqué !</h3>""" % code_name
|
||||
err_page = (
|
||||
"""<h3 class="title-error">Code étudiant (%s) dupliqué !</h3>"""
|
||||
% code_name
|
||||
)
|
||||
log("*** error: code %s duplique: %s" % (code_name, args[code_name]))
|
||||
raise ScoGenError(err_page)
|
||||
|
||||
|
@ -1,25 +1,25 @@
|
||||
{
|
||||
"files": {
|
||||
"main.css": "./static/css/main.6be5a531.chunk.css",
|
||||
"main.js": "./static/js/main.81258512.chunk.js",
|
||||
"main.js.map": "./static/js/main.81258512.chunk.js.map",
|
||||
"main.js": "./static/js/main.16dd1ee7.chunk.js",
|
||||
"main.js.map": "./static/js/main.16dd1ee7.chunk.js.map",
|
||||
"runtime-main.js": "./static/js/runtime-main.ca83272f.js",
|
||||
"runtime-main.js.map": "./static/js/runtime-main.ca83272f.js.map",
|
||||
"static/css/2.4c97ca4f.chunk.css": "./static/css/2.4c97ca4f.chunk.css",
|
||||
"static/js/2.64a47d60.chunk.js": "./static/js/2.64a47d60.chunk.js",
|
||||
"static/js/2.64a47d60.chunk.js.map": "./static/js/2.64a47d60.chunk.js.map",
|
||||
"static/js/2.ca66eda7.chunk.js": "./static/js/2.ca66eda7.chunk.js",
|
||||
"static/js/2.ca66eda7.chunk.js.map": "./static/js/2.ca66eda7.chunk.js.map",
|
||||
"static/js/3.92b28fed.chunk.js": "./static/js/3.92b28fed.chunk.js",
|
||||
"static/js/3.92b28fed.chunk.js.map": "./static/js/3.92b28fed.chunk.js.map",
|
||||
"index.html": "./index.html",
|
||||
"static/css/2.4c97ca4f.chunk.css.map": "./static/css/2.4c97ca4f.chunk.css.map",
|
||||
"static/css/main.6be5a531.chunk.css.map": "./static/css/main.6be5a531.chunk.css.map",
|
||||
"static/js/2.64a47d60.chunk.js.LICENSE.txt": "./static/js/2.64a47d60.chunk.js.LICENSE.txt"
|
||||
"static/js/2.ca66eda7.chunk.js.LICENSE.txt": "./static/js/2.ca66eda7.chunk.js.LICENSE.txt"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/runtime-main.ca83272f.js",
|
||||
"static/css/2.4c97ca4f.chunk.css",
|
||||
"static/js/2.64a47d60.chunk.js",
|
||||
"static/js/2.ca66eda7.chunk.js",
|
||||
"static/css/main.6be5a531.chunk.css",
|
||||
"static/js/main.81258512.chunk.js"
|
||||
"static/js/main.16dd1ee7.chunk.js"
|
||||
]
|
||||
}
|
@ -1 +1 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Scodoc Mobile"/><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"><link rel="apple-touch-icon" href="./scologo.png"/><link rel="manifest" href="./manifest.json"/><title>Scodoc Mobile</title><link href="./static/css/2.4c97ca4f.chunk.css" rel="stylesheet"><link href="./static/css/main.6be5a531.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,i,a=r[0],c=r[1],l=r[2],s=0,p=[];s<a.length;s++)i=a[s],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(r);p.length;)p.shift()();return u.push.apply(u,l||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var c=t[a];0!==o[c]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{3:"92b28fed"}[e]+".chunk.js"}(e);var c=new Error;u=function(r){a.onerror=a.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,t[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:a})}),12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(r)},i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="./",i.oe=function(e){throw console.error(e),e};var a=this.webpackJsonpscodocmobile=this.webpackJsonpscodocmobile||[],c=a.push.bind(a);a.push=r,a=a.slice();for(var l=0;l<a.length;l++)r(a[l]);var f=c;t()}([])</script><script src="./static/js/2.64a47d60.chunk.js"></script><script src="./static/js/main.81258512.chunk.js"></script></body></html>
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Scodoc Mobile"/><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"><link rel="apple-touch-icon" href="./scologo.png"/><link rel="manifest" href="./manifest.json"/><title>Scodoc Mobile</title><link href="./static/css/2.4c97ca4f.chunk.css" rel="stylesheet"><link href="./static/css/main.6be5a531.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,i,a=r[0],c=r[1],l=r[2],s=0,p=[];s<a.length;s++)i=a[s],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(r);p.length;)p.shift()();return u.push.apply(u,l||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var c=t[a];0!==o[c]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{3:"92b28fed"}[e]+".chunk.js"}(e);var c=new Error;u=function(r){a.onerror=a.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,t[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:a})}),12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(r)},i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="./",i.oe=function(e){throw console.error(e),e};var a=this.webpackJsonpscodocmobile=this.webpackJsonpscodocmobile||[],c=a.push.bind(a);a.push=r,a=a.slice();for(var l=0;l<a.length;l++)r(a[l]);var f=c;t()}([])</script><script src="./static/js/2.ca66eda7.chunk.js"></script><script src="./static/js/main.16dd1ee7.chunk.js"></script></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
static/mobile/static/js/2.ca66eda7.chunk.js.map
Normal file
1
static/mobile/static/js/2.ca66eda7.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
static/mobile/static/js/main.16dd1ee7.chunk.js
Normal file
2
static/mobile/static/js/main.16dd1ee7.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
static/mobile/static/js/main.16dd1ee7.chunk.js.map
Normal file
1
static/mobile/static/js/main.16dd1ee7.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user