& in generated urls

This commit is contained in:
Emmanuel Viennet 2021-05-11 11:48:32 +02:00
parent 13ea7aaa9e
commit e52ffb8357
38 changed files with 191 additions and 191 deletions

View File

@ -1,7 +1,7 @@
# -*- mode: python -*- # -*- mode: python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
SCOVERSION = "7.24" SCOVERSION = "7.25"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"

View File

@ -720,7 +720,7 @@ class ZAbsences(
+ self.sco_footer(REQUEST) + self.sco_footer(REQUEST)
) )
base_url = "SignaleAbsenceGrHebdo?datelundi=%s&%s&destination=%s" % ( base_url = "SignaleAbsenceGrHebdo?datelundi=%s&%s&destination=%s" % (
datelundi, datelundi,
groups_infos.groups_query_args, groups_infos.groups_query_args,
urllib.quote(destination), urllib.quote(destination),
@ -904,14 +904,14 @@ class ZAbsences(
etuds = [e for e in etuds if e["etudid"] in mod_inscrits] etuds = [e for e in etuds if e["etudid"] in mod_inscrits]
if not moduleimpl_id: if not moduleimpl_id:
moduleimpl_id = None moduleimpl_id = None
base_url_noweeks = "SignaleAbsenceGrSemestre?datedebut=%s&datefin=%s&%s&destination=%s" % ( base_url_noweeks = "SignaleAbsenceGrSemestre?datedebut=%s&datefin=%s&%s&destination=%s" % (
datedebut, datedebut,
datefin, datefin,
groups_infos.groups_query_args, groups_infos.groups_query_args,
urllib.quote(destination), urllib.quote(destination),
) )
base_url = ( base_url = (
base_url_noweeks + "&nbweeks=%s" % nbweeks base_url_noweeks + "&nbweeks=%s" % nbweeks
) # sans le moduleimpl_id ) # sans le moduleimpl_id
if etuds: if etuds:
@ -952,9 +952,9 @@ class ZAbsences(
dates = dates[-nbweeks:] dates = dates[-nbweeks:]
msg = "Montrer toutes les semaines" msg = "Montrer toutes les semaines"
nwl = 0 nwl = 0
url_link_semaines = base_url_noweeks + "&nbweeks=%s" % nwl url_link_semaines = base_url_noweeks + "&nbweeks=%s" % nwl
if moduleimpl_id: if moduleimpl_id:
url_link_semaines += "&moduleimpl_id=" + moduleimpl_id url_link_semaines += "&moduleimpl_id=" + moduleimpl_id
# #
dates = [x.ISO() for x in dates] dates = [x.ISO() for x in dates]
dayname = sco_abs.day_names(self)[jourdebut.weekday] dayname = sco_abs.day_names(self)[jourdebut.weekday]
@ -1027,7 +1027,7 @@ class ZAbsences(
"""<p> """<p>
Module concerné par ces absences (%(optionel_txt)s): Module concerné par ces absences (%(optionel_txt)s):
<select id="moduleimpl_id" name="moduleimpl_id" <select id="moduleimpl_id" name="moduleimpl_id"
onchange="document.location='%(url)s&amp;moduleimpl_id='+document.getElementById('moduleimpl_id').value"> onchange="document.location='%(url)s&moduleimpl_id='+document.getElementById('moduleimpl_id').value">
<option value="" %(sel)s>non spécifié</option> <option value="" %(sel)s>non spécifié</option>
%(menu_module)s %(menu_module)s
</select> </select>
@ -1327,7 +1327,7 @@ class ZAbsences(
for a in absnonjust: for a in absnonjust:
a["justlink"] = "<em>justifier</em>" a["justlink"] = "<em>justifier</em>"
a["_justlink_target"] = ( a["_justlink_target"] = (
"doJustifAbsence?etudid=%s&amp;datedebut=%s&amp;datefin=%s&amp;demijournee=%s" "doJustifAbsence?etudid=%s&datedebut=%s&datefin=%s&demijournee=%s"
% (etudid, a["datedmy"], a["datedmy"], a["ampm"]) % (etudid, a["datedmy"], a["datedmy"], a["ampm"])
) )
# #
@ -1463,7 +1463,7 @@ class ZAbsences(
) )
+ "<p>Période du %s au %s (nombre de <b>demi-journées</b>)<br/>" + "<p>Période du %s au %s (nombre de <b>demi-journées</b>)<br/>"
% (debut, fin), % (debut, fin),
base_url="%s&amp;formsemestre_id=%s&amp;debut=%s&amp;fin=%s" base_url="%s&formsemestre_id=%s&debut=%s&fin=%s"
% (groups_infos.base_url, formsemestre_id, debut, fin), % (groups_infos.base_url, formsemestre_id, debut, fin),
filename="etat_abs_" filename="etat_abs_"
+ scu.make_filename( + scu.make_filename(
@ -1700,7 +1700,7 @@ ou entrez une date pour visualiser les absents un jour donné&nbsp;:
"ProcessBilletAbsenceForm?billet_id=%s" % b["billet_id"] "ProcessBilletAbsenceForm?billet_id=%s" % b["billet_id"]
) )
if etud: if etud:
b["_etat_str_target"] += "&amp;etudid=%s" % etud["etudid"] b["_etat_str_target"] += "&etudid=%s" % etud["etudid"]
b["_billet_id_target"] = b["_etat_str_target"] b["_billet_id_target"] = b["_etat_str_target"]
else: else:
b["etat_str"] = "ok" b["etat_str"] = "ok"

View File

@ -554,7 +554,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
) )
if redirect: if redirect:
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"ue_list?formation_id=" + new_id + "&amp;msg=Nouvelle version !" "ue_list?formation_id=" + new_id + "&msg=Nouvelle version !"
) )
else: else:
return new_id, modules_old2new, ues_old2new return new_id, modules_old2new, ues_old2new
@ -1242,7 +1242,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
] ]
for ens in M["ens"]: for ens in M["ens"]:
H.append( H.append(
'<li>%s (<a class="stdlink" href="edit_enseignants_form_delete?moduleimpl_id=%s&amp;ens_id=%s">supprimer</a>)</li>' '<li>%s (<a class="stdlink" href="edit_enseignants_form_delete?moduleimpl_id=%s&ens_id=%s">supprimer</a>)</li>'
% ( % (
login2display.get(ens["ens_id"], ens["ens_id"]), login2display.get(ens["ens_id"], ens["ens_id"]),
moduleimpl_id, moduleimpl_id,
@ -1254,7 +1254,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
saisir et modifier toutes les notes des évaluations de ce module. saisir et modifier toutes les notes des évaluations de ce module.
</p> </p>
<p class="help">Pour changer le responsable du module, passez par la <p class="help">Pour changer le responsable du module, passez par la
page "<a class="stdlink" href="formsemestre_editwithmodules?formation_id=%s&amp;formsemestre_id=%s">Modification du semestre</a>", accessible uniquement au responsable de la formation (chef de département) page "<a class="stdlink" href="formsemestre_editwithmodules?formation_id=%s&formsemestre_id=%s">Modification du semestre</a>", accessible uniquement au responsable de la formation (chef de département)
</p> </p>
""" % ( """ % (
sem["formation_id"], sem["formation_id"],
@ -1401,7 +1401,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"moduleimpl_status?moduleimpl_id=" "moduleimpl_status?moduleimpl_id="
+ moduleimpl_id + moduleimpl_id
+ "&amp;head_message=responsable%20modifié" + "&head_message=responsable%20modifié"
) )
_expr_help = """<p class="help">Expérimental: formule de calcul de la moyenne %(target)s</p> _expr_help = """<p class="help">Expérimental: formule de calcul de la moyenne %(target)s</p>
@ -1489,7 +1489,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"moduleimpl_status?moduleimpl_id=" "moduleimpl_status?moduleimpl_id="
+ moduleimpl_id + moduleimpl_id
+ "&amp;head_message=règle%20de%20calcul%20modifiée" + "&head_message=règle%20de%20calcul%20modifiée"
) )
security.declareProtected(ScoView, "view_module_abs") security.declareProtected(ScoView, "view_module_abs")
@ -1630,7 +1630,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"formsemestre_status?formsemestre_id=" "formsemestre_status?formsemestre_id="
+ formsemestre_id + formsemestre_id
+ "&amp;head_message=règle%20de%20calcul%20modifiée" + "&head_message=règle%20de%20calcul%20modifiée"
) )
security.declareProtected(ScoView, "formsemestre_enseignants_list") security.declareProtected(ScoView, "formsemestre_enseignants_list")
@ -1860,7 +1860,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
raise ScoValueError( raise ScoValueError(
"""Désinscription impossible: l'étudiant a une décision de jury """Désinscription impossible: l'étudiant a une décision de jury
(la supprimer avant si nécessaire: (la supprimer avant si nécessaire:
<a href="formsemestre_validation_suppress_etud?etudid=%s&amp;formsemestre_id=%s"> <a href="formsemestre_validation_suppress_etud?etudid=%s&formsemestre_id=%s">
supprimer décision jury</a> supprimer décision jury</a>
) )
""" """
@ -2682,7 +2682,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
if not can_edit_app: if not can_edit_app:
raise AccessDenied("vous n'avez pas le droit d'ajouter une appreciation") raise AccessDenied("vous n'avez pas le droit d'ajouter une appreciation")
# #
bull_url = "formsemestre_bulletinetud?formsemestre_id=%s&amp;etudid=%s" % ( bull_url = "formsemestre_bulletinetud?formsemestre_id=%s&etudid=%s" % (
formsemestre_id, formsemestre_id,
etudid, etudid,
) )
@ -3026,7 +3026,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
OK="Supprimer", OK="Supprimer",
dest_url="", dest_url="",
REQUEST=REQUEST, REQUEST=REQUEST,
cancel_url="formsemestre_validation_etud_form?formsemestre_id=%s&amp;etudid=%s" cancel_url="formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s"
% (formsemestre_id, etudid), % (formsemestre_id, etudid),
parameters={"etudid": etudid, "formsemestre_id": formsemestre_id}, parameters={"etudid": etudid, "formsemestre_id": formsemestre_id},
) )
@ -3036,7 +3036,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl
) )
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
self.ScoURL() self.ScoURL()
+ "/Notes/formsemestre_validation_etud_form?formsemestre_id=%s&amp;etudid=%s&amp;head_message=Décision%%20supprimée" + "/Notes/formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s&head_message=Décision%%20supprimée"
% (formsemestre_id, etudid) % (formsemestre_id, etudid)
) )

View File

@ -523,7 +523,7 @@ class ZScoUsers(
if authuser.has_permission(ScoUsersAdmin, self): if authuser.has_permission(ScoUsersAdmin, self):
H.append( H.append(
""" """
<li><a class="stdlink" href="create_user_form?user_name=%(user_name)s&amp;edit=1">modifier/déactiver ce compte</a></li> <li><a class="stdlink" href="create_user_form?user_name=%(user_name)s&edit=1">modifier/déactiver ce compte</a></li>
<li><a class="stdlink" href="delete_user_form?user_name=%(user_name)s">supprimer cet utilisateur</a> <em>(à n'utiliser qu'en cas d'erreur !)</em></li> <li><a class="stdlink" href="delete_user_form?user_name=%(user_name)s">supprimer cet utilisateur</a> <em>(à n'utiliser qu'en cas d'erreur !)</em></li>
""" """
% info[0] % info[0]

View File

@ -279,7 +279,7 @@ class ZScolar(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Imp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<title>Programme DUT R&amp;T</title> <title>Programme DUT TEST</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="LANG" content="fr" /> <meta name="LANG" content="fr" />
@ -679,7 +679,7 @@ REQUEST.URL0=%s<br/>
date = date.next() date = date.next()
FA.append("</select>") FA.append("</select>")
FA.append( FA.append(
'<a href="Absences/EtatAbsencesGr?group_ids=%%(group_id)s&amp;debut=%(date_debut)s&amp;fin=%(date_fin)s">état</a>' '<a href="Absences/EtatAbsencesGr?group_ids=%%(group_id)s&debut=%(date_debut)s&fin=%(date_fin)s">état</a>'
% sem % sem
) )
FA.append("</form></td>") FA.append("</form></td>")
@ -715,8 +715,8 @@ REQUEST.URL0=%s<br/>
"""<td> """<td>
<a href="%(url)s/groups_view?group_ids=%(group_id)s">%(label)s</a> <a href="%(url)s/groups_view?group_ids=%(group_id)s">%(label)s</a>
</td><td> </td><td>
(<a href="%(url)s/groups_view?group_ids=%(group_id)s&amp;format=xls">format tableur</a>) (<a href="%(url)s/groups_view?group_ids=%(group_id)s&format=xls">format tableur</a>)
<a href="%(url)s/groups_view?curtab=tab-photos&amp;group_ids=%(group_id)s&amp;etat=I">Photos</a> <a href="%(url)s/groups_view?curtab=tab-photos&group_ids=%(group_id)s&etat=I">Photos</a>
</td>""" </td>"""
% group % group
) )
@ -1174,7 +1174,7 @@ REQUEST.URL0=%s<br/>
scolars.etud_annotations_delete(cnx, annotation_id) scolars.etud_annotations_delete(cnx, annotation_id)
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"ficheEtud?etudid=%s&amp;head_message=Annotation%%20supprimée" % (etudid) "ficheEtud?etudid=%s&head_message=Annotation%%20supprimée" % (etudid)
) )
security.declareProtected(ScoEtudChangeAdr, "formChangeCoordonnees") security.declareProtected(ScoEtudChangeAdr, "formChangeCoordonnees")
@ -2776,7 +2776,7 @@ def _simple_error_page(context, msg, DeptId=None):
H = [context.standard_html_header(context), "<h2>Erreur !</h2>", "<p>", msg, "</p>"] H = [context.standard_html_header(context), "<h2>Erreur !</h2>", "<p>", msg, "</p>"]
if DeptId: if DeptId:
H.append( H.append(
'<p><a href="delete_dept?DeptId=%s&amp;force=1">Supprimer le dossier %s</a>(très recommandé !)</p>' '<p><a href="delete_dept?DeptId=%s&force=1">Supprimer le dossier %s</a>(très recommandé !)</p>'
% (DeptId, DeptId) % (DeptId, DeptId)
) )
H.append(context.standard_html_footer(context)) H.append(context.standard_html_footer(context))

View File

@ -445,14 +445,14 @@ class GenTable:
if self.base_url: if self.base_url:
if self.xls_link: if self.xls_link:
H.append( H.append(
' <a href="%s&amp;format=xls">%s</a>' ' <a href="%s&format=xls">%s</a>'
% (self.base_url, scu.ICON_XLS) % (self.base_url, scu.ICON_XLS)
) )
if self.xls_link and self.pdf_link: if self.xls_link and self.pdf_link:
H.append("&nbsp;&nbsp;") H.append("&nbsp;&nbsp;")
if self.pdf_link: if self.pdf_link:
H.append( H.append(
' <a href="%s&amp;format=pdf">%s</a>' ' <a href="%s&format=pdf">%s</a>'
% (self.base_url, scu.ICON_PDF) % (self.base_url, scu.ICON_PDF)
) )
H.append("</p>") H.append("</p>")

View File

@ -733,8 +733,8 @@ def ListeAbsEtud(
etudid, datedebut, with_evals=with_evals, format=format etudid, datedebut, with_evals=with_evals, format=format
) )
if REQUEST: if REQUEST:
base_url_nj = "%s?etudid=%s&amp;absjust_only=0" % (REQUEST.URL0, etudid) base_url_nj = "%s?etudid=%s&absjust_only=0" % (REQUEST.URL0, etudid)
base_url_j = "%s?etudid=%s&amp;absjust_only=1" % (REQUEST.URL0, etudid) base_url_j = "%s?etudid=%s&absjust_only=1" % (REQUEST.URL0, etudid)
else: else:
base_url_nj = base_url_j = "" base_url_nj = base_url_j = ""
tab_absnonjust = GenTable( tab_absnonjust = GenTable(

View File

@ -484,7 +484,7 @@ enregistrés et non modifiables, on peut les retrouver ultérieurement.
# submitted or cancelled: # submitted or cancelled:
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"formsemestre_list_archives?formsemestre_id=%s&amp;head_message=%s" "formsemestre_list_archives?formsemestre_id=%s&head_message=%s"
% (formsemestre_id, msg) % (formsemestre_id, msg)
) )
@ -510,7 +510,7 @@ def formsemestre_list_archives(context, REQUEST, formsemestre_id):
for a in L: for a in L:
archive_name = PVArchive.get_archive_name(a["archive_id"]) archive_name = PVArchive.get_archive_name(a["archive_id"])
H.append( H.append(
'<li>%s : <em>%s</em> (<a href="formsemestre_delete_archive?formsemestre_id=%s&amp;archive_name=%s">supprimer</a>)<ul>' '<li>%s : <em>%s</em> (<a href="formsemestre_delete_archive?formsemestre_id=%s&archive_name=%s">supprimer</a>)<ul>'
% ( % (
a["date"].strftime("%d/%m/%Y %H:%M"), a["date"].strftime("%d/%m/%Y %H:%M"),
a["description"], a["description"],
@ -520,7 +520,7 @@ def formsemestre_list_archives(context, REQUEST, formsemestre_id):
) )
for filename in a["content"]: for filename in a["content"]:
H.append( H.append(
'<li><a href="formsemestre_get_archived_file?formsemestre_id=%s&amp;archive_name=%s&amp;filename=%s">%s</a></li>' '<li><a href="formsemestre_get_archived_file?formsemestre_id=%s&archive_name=%s&filename=%s">%s</a></li>'
% (formsemestre_id, archive_name, filename, filename) % (formsemestre_id, archive_name, filename, filename)
) )
if not a["content"]: if not a["content"]:
@ -570,4 +570,4 @@ def formsemestre_delete_archive(
) )
PVArchive.delete_archive(archive_id) PVArchive.delete_archive(archive_id)
return REQUEST.RESPONSE.redirect(dest_url + "&amp;head_message=Archive%20supprimée") return REQUEST.RESPONSE.redirect(dest_url + "&head_message=Archive%20supprimée")

View File

@ -83,14 +83,14 @@ def etud_list_archives_html(context, REQUEST, etudid):
) )
for filename in a["content"]: for filename in a["content"]:
H.append( H.append(
"""<a class="stdlink etudarchive_link" href="etud_get_archived_file?etudid=%s&amp;archive_name=%s&amp;filename=%s">%s</a>""" """<a class="stdlink etudarchive_link" href="etud_get_archived_file?etudid=%s&archive_name=%s&filename=%s">%s</a>"""
% (etudid, archive_name, filename, filename) % (etudid, archive_name, filename, filename)
) )
if not a["content"]: if not a["content"]:
H.append("<em>aucun fichier !</em>") H.append("<em>aucun fichier !</em>")
if can_edit: if can_edit:
H.append( H.append(
'<span class="deletudarchive"><a class="smallbutton" href="etud_delete_archive?etudid=%s&amp;archive_name=%s">%s</a></span>' '<span class="deletudarchive"><a class="smallbutton" href="etud_delete_archive?etudid=%s&archive_name=%s">%s</a></span>'
% (etudid, archive_name, delete_icon) % (etudid, archive_name, delete_icon)
) )
else: else:
@ -216,7 +216,7 @@ def etud_delete_archive(context, REQUEST, etudid, archive_name, dialog_confirmed
) )
EtudsArchive.delete_archive(archive_id) EtudsArchive.delete_archive(archive_id)
return REQUEST.RESPONSE.redirect(dest_url + "&amp;head_message=Archive%20supprimée") return REQUEST.RESPONSE.redirect(dest_url + "&head_message=Archive%20supprimée")
def etud_get_archived_file(context, REQUEST, etudid, archive_name, filename): def etud_get_archived_file(context, REQUEST, etudid, archive_name, filename):

View File

@ -329,7 +329,7 @@ def formsemestre_bulletinetud_dict(
) )
u[ u[
"ue_descr_html" "ue_descr_html"
] = '<a href="formsemestre_bulletinetud?formsemestre_id=%s&amp;etudid=%s" title="%s" class="bull_link">%s</a>' % ( ] = '<a href="formsemestre_bulletinetud?formsemestre_id=%s&etudid=%s" title="%s" class="bull_link">%s</a>' % (
sem_origin["formsemestre_id"], sem_origin["formsemestre_id"],
etudid, etudid,
sem_origin["titreannee"], sem_origin["titreannee"],
@ -522,7 +522,7 @@ def _ue_mod_bulletin(context, etudid, formsemestre_id, ue_id, modimpls, nt, vers
else: else:
e["name"] = e["description"] or "le %s" % e["jour"] e["name"] = e["description"] or "le %s" % e["jour"]
e["target_html"] = ( e["target_html"] = (
"evaluation_listenotes?evaluation_id=%s&amp;format=html&amp;tf-submitted=1" "evaluation_listenotes?evaluation_id=%s&format=html&tf-submitted=1"
% e["evaluation_id"] % e["evaluation_id"]
) )
e["name_html"] = '<a class="bull_link" href="%s">%s</a>' % ( e["name_html"] = '<a class="bull_link" href="%s">%s</a>' % (
@ -571,7 +571,7 @@ def _ue_mod_bulletin(context, etudid, formsemestre_id, ue_id, modimpls, nt, vers
mod["evaluations_incompletes"].append(e) mod["evaluations_incompletes"].append(e)
e["name"] = (e["description"] or "") + " (%s)" % e["jour"] e["name"] = (e["description"] or "") + " (%s)" % e["jour"]
e["target_html"] = ( e["target_html"] = (
"evaluation_listenotes?evaluation_id=%s&amp;format=html&amp;tf-submitted=1" "evaluation_listenotes?evaluation_id=%s&format=html&tf-submitted=1"
% e["evaluation_id"] % e["evaluation_id"]
) )
e["name_html"] = '<a class="bull_link" href="%s">%s</a>' % ( e["name_html"] = '<a class="bull_link" href="%s">%s</a>' % (
@ -816,7 +816,7 @@ def formsemestre_bulletinetud(
if sem["modalite"] == "EXT": if sem["modalite"] == "EXT":
R.append( R.append(
"""<p><a """<p><a
href="formsemestre_ext_edit_ue_validations?formsemestre_id=%s&amp;etudid=%s" href="formsemestre_ext_edit_ue_validations?formsemestre_id=%s&etudid=%s"
class="stdlink"> class="stdlink">
Editer les validations d'UE dans ce semestre extérieur Editer les validations d'UE dans ce semestre extérieur
</a></p>""" </a></p>"""
@ -1076,7 +1076,7 @@ def _formsemestre_bulletinetud_header_html(
menuBul = [ menuBul = [
{ {
"title": "Réglages bulletins", "title": "Réglages bulletins",
"url": "formsemestre_edit_options?formsemestre_id=%s&amp;target_url=%s" "url": "formsemestre_edit_options?formsemestre_id=%s&target_url=%s"
% (formsemestre_id, qurl), % (formsemestre_id, qurl),
"enabled": (uid in sem["responsables"]) "enabled": (uid in sem["responsables"])
or authuser.has_permission(ScoImplement, context), or authuser.has_permission(ScoImplement, context),
@ -1087,13 +1087,13 @@ def _formsemestre_bulletinetud_header_html(
context, formsemestre_id context, formsemestre_id
), ),
"url": url "url": url
+ "?formsemestre_id=%s&amp;etudid=%s&amp;format=pdf&amp;version=%s" + "?formsemestre_id=%s&etudid=%s&format=pdf&version=%s"
% (formsemestre_id, etudid, version), % (formsemestre_id, etudid, version),
}, },
{ {
"title": "Envoi par mail à %s" % etud["email"], "title": "Envoi par mail à %s" % etud["email"],
"url": url "url": url
+ "?formsemestre_id=%s&amp;etudid=%s&amp;format=pdfmail&amp;version=%s" + "?formsemestre_id=%s&etudid=%s&format=pdfmail&version=%s"
% (formsemestre_id, etudid, version), % (formsemestre_id, etudid, version),
"enabled": etud["email"] "enabled": etud["email"]
and can_send_bulletin_by_mail( and can_send_bulletin_by_mail(
@ -1103,7 +1103,7 @@ def _formsemestre_bulletinetud_header_html(
{ {
"title": "Envoi par mail à %s (adr. personnelle)" % etud["emailperso"], "title": "Envoi par mail à %s (adr. personnelle)" % etud["emailperso"],
"url": url "url": url
+ "?formsemestre_id=%s&amp;etudid=%s&amp;format=pdfmail&amp;version=%s&amp;prefer_mail_perso=1" + "?formsemestre_id=%s&etudid=%s&format=pdfmail&version=%s&prefer_mail_perso=1"
% (formsemestre_id, etudid, version), % (formsemestre_id, etudid, version),
"enabled": etud["emailperso"] "enabled": etud["emailperso"]
and can_send_bulletin_by_mail( and can_send_bulletin_by_mail(
@ -1113,12 +1113,12 @@ def _formsemestre_bulletinetud_header_html(
{ {
"title": "Version XML", "title": "Version XML",
"url": url "url": url
+ "?formsemestre_id=%s&amp;etudid=%s&amp;format=xml&amp;version=%s" + "?formsemestre_id=%s&etudid=%s&format=xml&version=%s"
% (formsemestre_id, etudid, version), % (formsemestre_id, etudid, version),
}, },
{ {
"title": "Ajouter une appréciation", "title": "Ajouter une appréciation",
"url": "appreciation_add_form?etudid=%s&amp;formsemestre_id=%s" "url": "appreciation_add_form?etudid=%s&formsemestre_id=%s"
% (etudid, formsemestre_id), % (etudid, formsemestre_id),
"enabled": ( "enabled": (
(authuser in sem["responsables"]) (authuser in sem["responsables"])
@ -1127,31 +1127,31 @@ def _formsemestre_bulletinetud_header_html(
}, },
{ {
"title": "Enregistrer un semestre effectué ailleurs", "title": "Enregistrer un semestre effectué ailleurs",
"url": "formsemestre_ext_create_form?etudid=%s&amp;formsemestre_id=%s" "url": "formsemestre_ext_create_form?etudid=%s&formsemestre_id=%s"
% (etudid, formsemestre_id), % (etudid, formsemestre_id),
"enabled": authuser.has_permission(ScoImplement, context), "enabled": authuser.has_permission(ScoImplement, context),
}, },
{ {
"title": "Enregistrer une validation d'UE antérieure", "title": "Enregistrer une validation d'UE antérieure",
"url": "formsemestre_validate_previous_ue?etudid=%s&amp;formsemestre_id=%s" "url": "formsemestre_validate_previous_ue?etudid=%s&formsemestre_id=%s"
% (etudid, formsemestre_id), % (etudid, formsemestre_id),
"enabled": context._can_validate_sem(REQUEST, formsemestre_id), "enabled": context._can_validate_sem(REQUEST, formsemestre_id),
}, },
{ {
"title": "Enregistrer note d'une UE externe", "title": "Enregistrer note d'une UE externe",
"url": "external_ue_create_form?etudid=%s&amp;formsemestre_id=%s" "url": "external_ue_create_form?etudid=%s&formsemestre_id=%s"
% (etudid, formsemestre_id), % (etudid, formsemestre_id),
"enabled": context._can_validate_sem(REQUEST, formsemestre_id), "enabled": context._can_validate_sem(REQUEST, formsemestre_id),
}, },
{ {
"title": "Entrer décisions jury", "title": "Entrer décisions jury",
"url": "formsemestre_validation_etud_form?formsemestre_id=%s&amp;etudid=%s" "url": "formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s"
% (formsemestre_id, etudid), % (formsemestre_id, etudid),
"enabled": context._can_validate_sem(REQUEST, formsemestre_id), "enabled": context._can_validate_sem(REQUEST, formsemestre_id),
}, },
{ {
"title": "Editer PV jury", "title": "Editer PV jury",
"url": "formsemestre_pvjury_pdf?formsemestre_id=%s&amp;etudid=%s" "url": "formsemestre_pvjury_pdf?formsemestre_id=%s&etudid=%s"
% (formsemestre_id, etudid), % (formsemestre_id, etudid),
"enabled": True, "enabled": True,
}, },
@ -1164,7 +1164,7 @@ def _formsemestre_bulletinetud_header_html(
'<td> <a href="%s">%s</a></td>' '<td> <a href="%s">%s</a></td>'
% ( % (
url url
+ "?formsemestre_id=%s&amp;etudid=%s&amp;format=pdf&amp;version=%s" + "?formsemestre_id=%s&etudid=%s&format=pdf&version=%s"
% (formsemestre_id, etudid, version), % (formsemestre_id, etudid, version),
scu.ICON_PDF, scu.ICON_PDF,
) )

View File

@ -324,7 +324,7 @@ class BulletinGeneratorLegacy(sco_bulletins_generator.BulletinGenerator):
for app in I["appreciations_list"]: for app in I["appreciations_list"]:
if can_edit_app: if can_edit_app:
mlink = ( mlink = (
'<a class="stdlink" href="appreciation_add_form?id=%s">modifier</a> <a class="stdlink" href="appreciation_add_form?id=%s&amp;suppress=1">supprimer</a>' '<a class="stdlink" href="appreciation_add_form?id=%s">modifier</a> <a class="stdlink" href="appreciation_add_form?id=%s&suppress=1">supprimer</a>'
% (app["id"], app["id"]) % (app["id"], app["id"])
) )
else: else:
@ -335,7 +335,7 @@ class BulletinGeneratorLegacy(sco_bulletins_generator.BulletinGenerator):
) )
if can_edit_app: if can_edit_app:
H.append( H.append(
'<p><a class="stdlink" href="appreciation_add_form?etudid=%(etudid)s&amp;formsemestre_id=%(formsemestre_id)s">Ajouter une appréciation</a></p>' '<p><a class="stdlink" href="appreciation_add_form?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s">Ajouter une appréciation</a></p>'
% self.infos % self.infos
) )
H.append("</div>") H.append("</div>")

View File

@ -159,7 +159,7 @@ class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
for app in self.infos["appreciations_list"]: for app in self.infos["appreciations_list"]:
if can_edit_app: if can_edit_app:
mlink = ( mlink = (
'<a class="stdlink" href="appreciation_add_form?id=%s">modifier</a> <a class="stdlink" href="appreciation_add_form?id=%s&amp;suppress=1">supprimer</a>' '<a class="stdlink" href="appreciation_add_form?id=%s">modifier</a> <a class="stdlink" href="appreciation_add_form?id=%s&suppress=1">supprimer</a>'
% (app["id"], app["id"]) % (app["id"], app["id"])
) )
else: else:
@ -170,7 +170,7 @@ class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
) )
if can_edit_app: if can_edit_app:
H.append( H.append(
'<p><a class="stdlink" href="appreciation_add_form?etudid=%(etudid)s&amp;formsemestre_id=%(formsemestre_id)s">Ajouter une appréciation</a></p>' '<p><a class="stdlink" href="appreciation_add_form?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s">Ajouter une appréciation</a></p>'
% self.infos % self.infos
) )
H.append("</div>") H.append("</div>")

View File

@ -194,7 +194,7 @@ def formsemestre_estim_cost(
) )
tab.html_before_table = h tab.html_before_table = h
tab.base_url = ( tab.base_url = (
"%s?formsemestre_id=%s&amp;n_group_td=%s&amp;n_group_tp=%s&amp;coef_tp=%s" "%s?formsemestre_id=%s&n_group_td=%s&n_group_tp=%s&coef_tp=%s"
% (REQUEST.URL0, formsemestre_id, n_group_td, n_group_tp, coef_tp) % (REQUEST.URL0, formsemestre_id, n_group_td, n_group_tp, coef_tp)
) )

View File

@ -435,14 +435,14 @@ Si vous souhaitez modifier cette formation (par exemple pour y ajouter un module
H.append('<li class="notes_ue_list">') H.append('<li class="notes_ue_list">')
if iue != 0 and editable: if iue != 0 and editable:
H.append( H.append(
'<a href="ue_move?ue_id=%s&amp;after=0" class="aud">%s</a>' '<a href="ue_move?ue_id=%s&after=0" class="aud">%s</a>'
% (UE["ue_id"], arrow_up) % (UE["ue_id"], arrow_up)
) )
else: else:
H.append(arrow_none) H.append(arrow_none)
if iue < len(ue_list) - 1 and editable: if iue < len(ue_list) - 1 and editable:
H.append( H.append(
'<a href="ue_move?ue_id=%s&amp;after=1" class="aud">%s</a>' '<a href="ue_move?ue_id=%s&after=1" class="aud">%s</a>'
% (UE["ue_id"], arrow_down) % (UE["ue_id"], arrow_down)
) )
else: else:
@ -500,14 +500,14 @@ Si vous souhaitez modifier cette formation (par exemple pour y ajouter un module
H.append('<span class="notes_module_list_buts">') H.append('<span class="notes_module_list_buts">')
if im != 0 and editable: if im != 0 and editable:
H.append( H.append(
'<a href="module_move?module_id=%s&amp;after=0" class="aud">%s</a>' '<a href="module_move?module_id=%s&after=0" class="aud">%s</a>'
% (Mod["module_id"], arrow_up) % (Mod["module_id"], arrow_up)
) )
else: else:
H.append(arrow_none) H.append(arrow_none)
if im < len(Modlist) - 1 and editable: if im < len(Modlist) - 1 and editable:
H.append( H.append(
'<a href="module_move?module_id=%s&amp;after=1" class="aud">%s</a>' '<a href="module_move?module_id=%s&after=1" class="aud">%s</a>'
% (Mod["module_id"], arrow_down) % (Mod["module_id"], arrow_down)
) )
else: else:
@ -620,9 +620,9 @@ Si vous souhaitez modifier cette formation (par exemple pour y ajouter un module
""" """
<li><a class="stdlink" href="formation_table_recap?formation_id=%(formation_id)s">Table récapitulative de la formation</a></li> <li><a class="stdlink" href="formation_table_recap?formation_id=%(formation_id)s">Table récapitulative de la formation</a></li>
<li><a class="stdlink" href="formation_export?formation_id=%(formation_id)s&amp;format=xml">Export XML de la formation</a> (permet de la sauvegarder pour l'échanger avec un autre site)</li> <li><a class="stdlink" href="formation_export?formation_id=%(formation_id)s&format=xml">Export XML de la formation</a> (permet de la sauvegarder pour l'échanger avec un autre site)</li>
<li><a class="stdlink" href="formation_export?formation_id=%(formation_id)s&amp;format=json">Export JSON de la formation</a></li> <li><a class="stdlink" href="formation_export?formation_id=%(formation_id)s&format=json">Export JSON de la formation</a></li>
<li><a class="stdlink" href="module_list?formation_id=%(formation_id)s">Liste détaillée des modules de la formation</a> (debug) </li> <li><a class="stdlink" href="module_list?formation_id=%(formation_id)s">Liste détaillée des modules de la formation</a> (debug) </li>
</ul> </ul>
@ -646,7 +646,7 @@ Si vous souhaitez modifier cette formation (par exemple pour y ajouter un module
H.append(" [verrouillé]") H.append(" [verrouillé]")
else: else:
H.append( H.append(
' <a class="stdlink" href="formsemestre_editwithmodules?formation_id=%(formation_id)s&amp;formsemestre_id=%(formsemestre_id)s">Modifier</a>' ' <a class="stdlink" href="formsemestre_editwithmodules?formation_id=%(formation_id)s&formsemestre_id=%(formsemestre_id)s">Modifier</a>'
% sem % sem
) )
H.append("</li>") H.append("</li>")
@ -655,7 +655,7 @@ Si vous souhaitez modifier cette formation (par exemple pour y ajouter un module
if authuser.has_permission(ScoImplement, context): if authuser.has_permission(ScoImplement, context):
H.append( H.append(
"""<ul> """<ul>
<li><a class="stdlink" href="formsemestre_createwithmodules?formation_id=%(formation_id)s&amp;semestre_id=1">Mettre en place un nouveau semestre de formation %(acronyme)s</a> <li><a class="stdlink" href="formsemestre_createwithmodules?formation_id=%(formation_id)s&semestre_id=1">Mettre en place un nouveau semestre de formation %(acronyme)s</a>
</li> </li>
</ul>""" </ul>"""

View File

@ -177,8 +177,8 @@ def apo_semset_maq_status(
H.append("""<li>Il y a plusieurs années scolaires !</li>""") H.append("""<li>Il y a plusieurs années scolaires !</li>""")
if nips_no_sco: # seulement un warning if nips_no_sco: # seulement un warning
url_list = ( url_list = (
"view_apo_etuds?semset_id=%s&amp;title=Etudiants%%20presents%%20dans%%20maquettes%%20Apogee%%20mais%%20pas%%20dans%%20les%%20semestres%%20ScoDoc:&amp;nips=%s" "view_apo_etuds?semset_id=%s&title=Etudiants%%20presents%%20dans%%20maquettes%%20Apogee%%20mais%%20pas%%20dans%%20les%%20semestres%%20ScoDoc:&nips=%s"
% (semset_id, "&amp;nips=".join(nips_no_sco)) % (semset_id, "&nips=".join(nips_no_sco))
) )
H.append( H.append(
'<li class="apo_csv_warning">Attention: il y a <a href="%s">%d étudiant(s)</a> dans les maquettes Apogée chargées non inscrit(s) dans ce semestre ScoDoc;</li>' '<li class="apo_csv_warning">Attention: il y a <a href="%s">%d étudiant(s)</a> dans les maquettes Apogée chargées non inscrit(s) dans ce semestre ScoDoc;</li>'
@ -196,8 +196,8 @@ def apo_semset_maq_status(
if nips_no_apo: if nips_no_apo:
url_list = ( url_list = (
"view_scodoc_etuds?semset_id=%s&amp;title=Etudiants%%20ScoDoc%%20non%%20listés%%20dans%%20les%%20maquettes%%20Apogée%%20chargées&amp;nips=%s" "view_scodoc_etuds?semset_id=%s&title=Etudiants%%20ScoDoc%%20non%%20listés%%20dans%%20les%%20maquettes%%20Apogée%%20chargées&nips=%s"
% (semset_id, "&amp;nips=".join(nips_no_apo)) % (semset_id, "&nips=".join(nips_no_apo))
) )
H.append( H.append(
'<li><a href="%s">%d étudiants</a> dans ce semestre non présents dans les maquettes Apogée chargées</li>' '<li><a href="%s">%d étudiants</a> dans ce semestre non présents dans les maquettes Apogée chargées</li>'
@ -206,8 +206,8 @@ def apo_semset_maq_status(
if nips_no_sco: # seulement un warning if nips_no_sco: # seulement un warning
url_list = ( url_list = (
"view_apo_etuds?semset_id=%s&amp;title=Etudiants%%20presents%%20dans%%20maquettes%%20Apogee%%20mais%%20pas%%20dans%%20les%%20semestres%%20ScoDoc:&amp;nips=%s" "view_apo_etuds?semset_id=%s&title=Etudiants%%20presents%%20dans%%20maquettes%%20Apogee%%20mais%%20pas%%20dans%%20les%%20semestres%%20ScoDoc:&nips=%s"
% (semset_id, "&amp;nips=".join(nips_no_sco)) % (semset_id, "&nips=".join(nips_no_sco))
) )
H.append( H.append(
'<li class="apo_csv_warning">Attention: il reste <a href="%s">%d étudiants</a> dans les maquettes Apogée chargées mais pas inscrits dans ce semestre ScoDoc</li>' '<li class="apo_csv_warning">Attention: il reste <a href="%s">%d étudiants</a> dans les maquettes Apogée chargées mais pas inscrits dans ce semestre ScoDoc</li>'
@ -216,8 +216,8 @@ def apo_semset_maq_status(
if apo_dups: if apo_dups:
url_list = ( url_list = (
"view_apo_etuds?semset_id=%s&amp;title=Doublons%%20Apogee&amp;nips=%s" "view_apo_etuds?semset_id=%s&title=Doublons%%20Apogee&nips=%s"
% (semset_id, "&amp;nips=".join(apo_dups)) % (semset_id, "&nips=".join(apo_dups))
) )
H.append( H.append(
'<li><a href="%s">%d étudiants</a> présents dans les <em>plusieurs</em> maquettes Apogée chargées</li>' '<li><a href="%s">%d étudiants</a> présents dans les <em>plusieurs</em> maquettes Apogée chargées</li>'
@ -673,7 +673,7 @@ def view_apo_csv_delete(
context, etape_apo, semset["annee_scolaire"], semset["sem_id"] context, etape_apo, semset["annee_scolaire"], semset["sem_id"]
) )
sco_etape_apogee.apo_csv_delete(context, info["archive_id"]) sco_etape_apogee.apo_csv_delete(context, info["archive_id"])
return REQUEST.RESPONSE.redirect(dest_url + "&amp;head_message=Archive%20supprimée") return REQUEST.RESPONSE.redirect(dest_url + "&head_message=Archive%20supprimée")
def view_apo_csv(context, etape_apo="", semset_id="", format="html", REQUEST=None): def view_apo_csv(context, etape_apo="", semset_id="", format="html", REQUEST=None):

View File

@ -236,11 +236,11 @@ def scodoc_table_results(
tab, semlist = _build_results_table( tab, semlist = _build_results_table(
context, start_date_iso, end_date_iso, types_parcours context, start_date_iso, end_date_iso, types_parcours
) )
tab.base_url = "%s?start_date=%s&amp;end_date=%s&amp;types_parcours=%s" % ( tab.base_url = "%s?start_date=%s&end_date=%s&types_parcours=%s" % (
REQUEST.URL0, REQUEST.URL0,
start_date, start_date,
end_date, end_date,
"&amp;types_parcours=".join([str(x) for x in types_parcours]), "&types_parcours=".join([str(x) for x in types_parcours]),
) )
if format != "html": if format != "html":
return tab.make_page( return tab.make_page(

View File

@ -141,7 +141,7 @@ def search_etud_in_dept(context, expnom="", REQUEST=None):
if len(etuds) > 0: if len(etuds) > 0:
# Choix dans la liste des résultats: # Choix dans la liste des résultats:
for e in etuds: for e in etuds:
target = dest_url + "?etudid=%s&amp;" % e["etudid"] target = dest_url + "?etudid=%s&" % e["etudid"]
e["_nomprenom_target"] = target e["_nomprenom_target"] = target
e["inscription_target"] = target e["inscription_target"] = target
e["_nomprenom_td_attrs"] = 'id="%s" class="etudinfo"' % (e["etudid"]) e["_nomprenom_td_attrs"] = 'id="%s" class="etudinfo"' % (e["etudid"])

View File

@ -241,7 +241,7 @@ def formation_list_table(context, formation_id=None, args={}, REQUEST=None):
for s in f["sems"] for s in f["sems"]
] ]
+ [ + [
'<a class="stdlink" href="formsemestre_createwithmodules?formation_id=%(formation_id)s&amp;semestre_id=1">ajouter</a>' '<a class="stdlink" href="formsemestre_createwithmodules?formation_id=%(formation_id)s&semestre_id=1">ajouter</a>'
% f % f
] ]
) )

View File

@ -711,7 +711,7 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False):
} }
_ = sco_moduleimpl.do_moduleimpl_create(context, modargs) _ = sco_moduleimpl.do_moduleimpl_create(context, modargs)
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"formsemestre_status?formsemestre_id=%s&amp;head_message=Nouveau%%20semestre%%20créé" "formsemestre_status?formsemestre_id=%s&head_message=Nouveau%%20semestre%%20créé"
% formsemestre_id % formsemestre_id
) )
else: else:
@ -811,7 +811,7 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False):
return msg_html return msg_html
else: else:
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"formsemestre_status?formsemestre_id=%s&amp;head_message=Semestre modifié" "formsemestre_status?formsemestre_id=%s&head_message=Semestre modifié"
% formsemestre_id % formsemestre_id
) )
@ -965,7 +965,7 @@ def formsemestre_clone(context, formsemestre_id, REQUEST=None):
REQUEST=REQUEST, REQUEST=REQUEST,
) )
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"formsemestre_status?formsemestre_id=%s&amp;head_message=Nouveau%%20semestre%%20créé" "formsemestre_status?formsemestre_id=%s&head_message=Nouveau%%20semestre%%20créé"
% new_formsemestre_id % new_formsemestre_id
) )
@ -1148,7 +1148,7 @@ def formsemestre_associate_new_version(
context, [formsemestre_id] + other_formsemestre_ids, REQUEST=REQUEST context, [formsemestre_id] + other_formsemestre_ids, REQUEST=REQUEST
) )
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"formsemestre_status?formsemestre_id=%s&amp;head_message=Formation%%20dupliquée" "formsemestre_status?formsemestre_id=%s&head_message=Formation%%20dupliquée"
% formsemestre_id % formsemestre_id
) )

View File

@ -86,7 +86,7 @@ def formsemestre_ext_create_form(context, etudid, formsemestre_id, REQUEST=None)
<p class="help"> <p class="help">
Notez que si un semestre extérieur similaire a déjà été créé pour un autre étudiant, Notez que si un semestre extérieur similaire a déjà été créé pour un autre étudiant,
il est préférable d'utiliser la fonction il est préférable d'utiliser la fonction
"<a href="formsemestre_inscription_with_modules_form?etudid=%s&amp;only_ext=1"> "<a href="formsemestre_inscription_with_modules_form?etudid=%s&only_ext=1">
inscrire à un autre semestre</a>" inscrire à un autre semestre</a>"
</p> </p>
""" """
@ -191,7 +191,7 @@ def formsemestre_ext_create_form(context, etudid, formsemestre_id, REQUEST=None)
return "\n".join(H) + "\n" + tf[1] + F return "\n".join(H) + "\n" + tf[1] + F
elif tf[0] == -1: elif tf[0] == -1:
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"%s/formsemestre_bulletinetud?formsemestre_id==%s&amp;etudid=%s" "%s/formsemestre_bulletinetud?formsemestre_id==%s&etudid=%s"
% (context.ScoURL(), formsemestre_id, etudid) % (context.ScoURL(), formsemestre_id, etudid)
) )
else: else:

View File

@ -147,7 +147,7 @@ def formsemestre_inscription_with_modules_form(
if (not only_ext) or (sem["modalite"] == "EXT"): if (not only_ext) or (sem["modalite"] == "EXT"):
H.append( H.append(
""" """
<li><a class="stdlink" href="formsemestre_inscription_with_modules?etudid=%s&amp;formsemestre_id=%s">%s</a> <li><a class="stdlink" href="formsemestre_inscription_with_modules?etudid=%s&formsemestre_id=%s">%s</a>
""" """
% (etudid, sem["formsemestre_id"], sem["titremois"]) % (etudid, sem["formsemestre_id"], sem["titremois"])
) )
@ -217,12 +217,12 @@ def formsemestre_inscription_with_modules(
H.append("<ul>") H.append("<ul>")
for s in others: for s in others:
H.append( H.append(
'<li><a href="formsemestre_desinscription?formsemestre_id=%s&amp;etudid=%s">déinscrire de %s</li>' '<li><a href="formsemestre_desinscription?formsemestre_id=%s&etudid=%s">déinscrire de %s</li>'
% (s["formsemestre_id"], etudid, s["titreannee"]) % (s["formsemestre_id"], etudid, s["titreannee"])
) )
H.append("</ul>") H.append("</ul>")
H.append( H.append(
"""<p><a href="formsemestre_inscription_with_modules?etudid=%s&amp;formsemestre_id=%s&amp;multiple_ok=1&amp;%s">Continuer quand même l'inscription</a></p>""" """<p><a href="formsemestre_inscription_with_modules?etudid=%s&formsemestre_id=%s&multiple_ok=1&%s">Continuer quand même l'inscription</a></p>"""
% (etudid, formsemestre_id, sco_groups.make_query_groups(group_ids)) % (etudid, formsemestre_id, sco_groups.make_query_groups(group_ids))
) )
return "\n".join(H) + F return "\n".join(H) + F
@ -332,7 +332,7 @@ def formsemestre_inscription_option(context, etudid, formsemestre_id, REQUEST=No
sem_origin = sco_formsemestre.get_formsemestre( sem_origin = sco_formsemestre.get_formsemestre(
context, ue_status["formsemestre_id"] context, ue_status["formsemestre_id"]
) )
ue_descr += ' <a class="discretelink" href="formsemestre_bulletinetud?formsemestre_id=%s&amp;etudid=%s" title="%s">(capitalisée le %s)' % ( ue_descr += ' <a class="discretelink" href="formsemestre_bulletinetud?formsemestre_id=%s&etudid=%s" title="%s">(capitalisée le %s)' % (
sem_origin["formsemestre_id"], sem_origin["formsemestre_id"],
etudid, etudid,
sem_origin["titreannee"], sem_origin["titreannee"],

View File

@ -154,7 +154,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
}, },
{ {
"title": "Modifier le semestre", "title": "Modifier le semestre",
"url": "formsemestre_editwithmodules?formation_id=%(formation_id)s&amp;formsemestre_id=%(formsemestre_id)s" "url": "formsemestre_editwithmodules?formation_id=%(formation_id)s&formsemestre_id=%(formsemestre_id)s"
% sem, % sem,
"enabled": ( "enabled": (
authuser.has_permission(ScoImplement, context) authuser.has_permission(ScoImplement, context)
@ -292,7 +292,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
}, },
{ {
"title": "Exporter table des étudiants", "title": "Exporter table des étudiants",
"url": "groups_view?format=allxls&amp;group_ids=" "url": "groups_view?format=allxls&group_ids="
+ sco_groups.get_default_group( + sco_groups.get_default_group(
context, formsemestre_id, fix_if_missing=True, REQUEST=REQUEST context, formsemestre_id, fix_if_missing=True, REQUEST=REQUEST
), ),
@ -388,7 +388,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
}, },
{ {
"title": "Saisie des décisions du jury", "title": "Saisie des décisions du jury",
"url": "formsemestre_recapcomplet?modejury=1&amp;hidemodules=1&amp;hidebac=1&amp;pref_override=0&amp;formsemestre_id=" "url": "formsemestre_recapcomplet?modejury=1&hidemodules=1&hidebac=1&pref_override=0&formsemestre_id="
+ formsemestre_id, + formsemestre_id,
"enabled": context._can_validate_sem(REQUEST, formsemestre_id), "enabled": context._can_validate_sem(REQUEST, formsemestre_id),
}, },
@ -684,7 +684,7 @@ def formsemestre_description_table(
caption=title, caption=title,
html_caption=title, html_caption=title,
html_class="table_leftalign formsemestre_description", html_class="table_leftalign formsemestre_description",
base_url="%s?formsemestre_id=%s&amp;with_evals=%s" base_url="%s?formsemestre_id=%s&with_evals=%s"
% (REQUEST.URL0, formsemestre_id, with_evals), % (REQUEST.URL0, formsemestre_id, with_evals),
page_title=title, page_title=title,
html_title=context.html_sem_header( html_title=context.html_sem_header(
@ -917,7 +917,7 @@ def formsemestre_status(context, formsemestre_id=None, REQUEST=None):
if can_edit: if can_edit:
H.append( H.append(
' <a href="edit_ue_expr?formsemestre_id=%s&amp;ue_id=%s">' ' <a href="edit_ue_expr?formsemestre_id=%s&ue_id=%s">'
% (formsemestre_id, ue["ue_id"]) % (formsemestre_id, ue["ue_id"])
) )
H.append( H.append(

View File

@ -109,13 +109,13 @@ def formsemestre_validation_etud_form(
if etud_index_prev != None: if etud_index_prev != None:
etud_p = context.getEtudInfo(etudid=T[etud_index_prev][-1], filled=True)[0] etud_p = context.getEtudInfo(etudid=T[etud_index_prev][-1], filled=True)[0]
Footer.append( Footer.append(
'<span><a href="formsemestre_validation_etud_form?formsemestre_id=%s&amp;etud_index=%s">Etud. précédent (%s)</a></span>' '<span><a href="formsemestre_validation_etud_form?formsemestre_id=%s&etud_index=%s">Etud. précédent (%s)</a></span>'
% (formsemestre_id, etud_index_prev, etud_p["nomprenom"]) % (formsemestre_id, etud_index_prev, etud_p["nomprenom"])
) )
if etud_index_next != None: if etud_index_next != None:
etud_n = context.getEtudInfo(etudid=T[etud_index_next][-1], filled=True)[0] etud_n = context.getEtudInfo(etudid=T[etud_index_next][-1], filled=True)[0]
Footer.append( Footer.append(
'<span style="padding-left: 50px;"><a href="formsemestre_validation_etud_form?formsemestre_id=%s&amp;etud_index=%s">Etud. suivant (%s)</a></span>' '<span style="padding-left: 50px;"><a href="formsemestre_validation_etud_form?formsemestre_id=%s&etud_index=%s">Etud. suivant (%s)</a></span>'
% (formsemestre_id, etud_index_next, etud_n["nomprenom"]) % (formsemestre_id, etud_index_next, etud_n["nomprenom"])
) )
Footer.append("</p>") Footer.append("</p>")
@ -171,12 +171,12 @@ def formsemestre_validation_etud_form(
if check: if check:
if not desturl: if not desturl:
desturl = ( desturl = (
"formsemestre_recapcomplet?modejury=1&amp;hidemodules=1&amp;hidebac=1&amp;pref_override=0&amp;formsemestre_id=" "formsemestre_recapcomplet?modejury=1&hidemodules=1&hidebac=1&pref_override=0&formsemestre_id="
+ formsemestre_id + formsemestre_id
) )
if sortcol: if sortcol:
desturl += ( desturl += (
"&amp;sortcol=" + sortcol "&sortcol=" + sortcol
) # pour refaire tri sorttable du tableau de notes ) # pour refaire tri sorttable du tableau de notes
desturl += "#etudid%s" % etudid # va a la bonne ligne desturl += "#etudid%s" % etudid # va a la bonne ligne
H.append('<ul><li><a href="%s">Continuer</a></li></ul>' % desturl) H.append('<ul><li><a href="%s">Continuer</a></li></ul>' % desturl)
@ -205,13 +205,13 @@ def formsemestre_validation_etud_form(
if not Se.prev_decision: if not Se.prev_decision:
H.append( H.append(
tf_error_message( tf_error_message(
"""Le jury n\'a pas statué sur le semestre précédent ! (<a href="formsemestre_validation_etud_form?formsemestre_id=%s&amp;etudid=%s">le faire maintenant</a>)""" """Le jury n\'a pas statué sur le semestre précédent ! (<a href="formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s">le faire maintenant</a>)"""
% (Se.prev["formsemestre_id"], etudid) % (Se.prev["formsemestre_id"], etudid)
) )
) )
if decision_jury: if decision_jury:
H.append( H.append(
'<a href="formsemestre_validation_suppress_etud?etudid=%s&amp;formsemestre_id=%s" class="stdlink">Supprimer décision existante</a>' '<a href="formsemestre_validation_suppress_etud?etudid=%s&formsemestre_id=%s" class="stdlink">Supprimer décision existante</a>'
% (etudid, formsemestre_id) % (etudid, formsemestre_id)
) )
H.append(context.sco_footer(REQUEST)) H.append(context.sco_footer(REQUEST))
@ -249,7 +249,7 @@ def formsemestre_validation_etud_form(
<input type="submit" value="Statuer sur le semestre précédent"/> <input type="submit" value="Statuer sur le semestre précédent"/>
<input type="hidden" name="formsemestre_id" value="%s"/> <input type="hidden" name="formsemestre_id" value="%s"/>
<input type="hidden" name="etudid" value="%s"/> <input type="hidden" name="etudid" value="%s"/>
<input type="hidden" name="desturl" value="formsemestre_validation_etud_form?etudid=%s&amp;formsemestre_id=%s"/> <input type="hidden" name="desturl" value="formsemestre_validation_etud_form?etudid=%s&formsemestre_id=%s"/>
""" """
% (Se.prev["formsemestre_id"], etudid, etudid, formsemestre_id) % (Se.prev["formsemestre_id"], etudid, etudid, formsemestre_id)
) )
@ -309,7 +309,7 @@ def formsemestre_validation_etud_form(
H.append(form_decision_manuelle(context, Se, formsemestre_id, etudid)) H.append(form_decision_manuelle(context, Se, formsemestre_id, etudid))
H.append( H.append(
"""<div class="link_defaillance">Ou <a class="stdlink" href="formDef?etudid=%s&amp;formsemestre_id=%s">déclarer l'étudiant comme défaillant dans ce semestre</a></div>""" """<div class="link_defaillance">Ou <a class="stdlink" href="formDef?etudid=%s&formsemestre_id=%s">déclarer l'étudiant comme défaillant dans ce semestre</a></div>"""
% (etudid, formsemestre_id) % (etudid, formsemestre_id)
) )
@ -402,23 +402,23 @@ def _redirect_valid_choice(
formsemestre_id, etudid, Se, choice, desturl, sortcol, REQUEST formsemestre_id, etudid, Se, choice, desturl, sortcol, REQUEST
): ):
adr = ( adr = (
"formsemestre_validation_etud_form?formsemestre_id=%s&amp;etudid=%s&amp;check=1" "formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s&check=1"
% (formsemestre_id, etudid) % (formsemestre_id, etudid)
) )
if sortcol: if sortcol:
adr += "&amp;sortcol=" + sortcol adr += "&sortcol=" + sortcol
# if desturl: # if desturl:
# desturl += "&amp;desturl=" + desturl # desturl += "&desturl=" + desturl
return REQUEST.RESPONSE.redirect(adr) return REQUEST.RESPONSE.redirect(adr)
# Si le precedent a été modifié, demande relecture du parcours. # Si le precedent a été modifié, demande relecture du parcours.
# sinon renvoie au listing general, # sinon renvoie au listing general,
# if choice.new_code_prev: # if choice.new_code_prev:
# REQUEST.RESPONSE.redirect( 'formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s&amp;check=1&amp;desturl=%s' % (formsemestre_id, etudid, desturl) ) # REQUEST.RESPONSE.redirect( 'formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s&check=1&desturl=%s' % (formsemestre_id, etudid, desturl) )
# else: # else:
# if not desturl: # if not desturl:
# desturl = 'formsemestre_recapcomplet?modejury=1&amp;hidemodules=1&amp;formsemestre_id=' + formsemestre_id # desturl = 'formsemestre_recapcomplet?modejury=1&hidemodules=1&formsemestre_id=' + formsemestre_id
# REQUEST.RESPONSE.redirect(desturl) # REQUEST.RESPONSE.redirect(desturl)
@ -555,7 +555,7 @@ def formsemestre_recap_parcours_table(
) )
H.append('<td class="datedebut">%(mois_debut)s</td>' % sem) H.append('<td class="datedebut">%(mois_debut)s</td>' % sem)
H.append( H.append(
'<td class="rcp_titre_sem"><a class="formsemestre_status_link" href="%sformsemestre_bulletinetud?formsemestre_id=%s&amp;etudid=%s" title="Bulletin de notes">%s</a></td>' '<td class="rcp_titre_sem"><a class="formsemestre_status_link" href="%sformsemestre_bulletinetud?formsemestre_id=%s&etudid=%s" title="Bulletin de notes">%s</a></td>'
% (a_url, sem["formsemestre_id"], etudid, sem["titreannee"]) % (a_url, sem["formsemestre_id"], etudid, sem["titreannee"])
) )
if decision_sem: if decision_sem:
@ -649,7 +649,7 @@ def formsemestre_recap_parcours_table(
H.append("<td></td>") H.append("<td></td>")
if with_links: if with_links:
H.append( H.append(
'<td><a href="%sformsemestre_validation_etud_form?formsemestre_id=%s&amp;etudid=%s">modifier</a></td>' '<td><a href="%sformsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s">modifier</a></td>'
% (a_url, sem["formsemestre_id"], etudid) % (a_url, sem["formsemestre_id"], etudid)
) )
@ -809,7 +809,7 @@ def form_decision_manuelle(
H.append( H.append(
"""</table> """</table>
<input type="submit" name="formvalidmanu_submit" value="Valider décision manuelle"/> <input type="submit" name="formvalidmanu_submit" value="Valider décision manuelle"/>
<span style="padding-left: 5em;"><a href="formsemestre_validation_suppress_etud?etudid=%s&amp;formsemestre_id=%s" class="stdlink">Supprimer décision existante</a></span> <span style="padding-left: 5em;"><a href="formsemestre_validation_suppress_etud?etudid=%s&formsemestre_id=%s" class="stdlink">Supprimer décision existante</a></span>
</form> </form>
""" """
% (etudid, formsemestre_id) % (etudid, formsemestre_id)
@ -928,12 +928,12 @@ def do_formsemestre_validation_auto(context, formsemestre_id, REQUEST):
) )
for etud in conflicts: for etud in conflicts:
H.append( H.append(
'<li><a href="formsemestre_validation_etud_form?formsemestre_id=%s&amp;etudid=%s&amp;check=1">%s</li>' '<li><a href="formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s&check=1">%s</li>'
% (formsemestre_id, etud["etudid"], etud["nomprenom"]) % (formsemestre_id, etud["etudid"], etud["nomprenom"])
) )
H.append("</ul>") H.append("</ul>")
H.append( H.append(
'<a href="formsemestre_recapcomplet?formsemestre_id=%s&amp;modejury=1&amp;hidemodules=1&amp;hidebac=1&amp;pref_override=0">continuer</a>' '<a href="formsemestre_recapcomplet?formsemestre_id=%s&modejury=1&hidemodules=1&hidebac=1&pref_override=0">continuer</a>'
% formsemestre_id % formsemestre_id
) )
H.append(context.sco_footer(REQUEST)) H.append(context.sco_footer(REQUEST))
@ -1184,7 +1184,7 @@ def formsemestre_validate_previous_ue(context, formsemestre_id, etudid, REQUEST=
) )
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
context.ScoURL() context.ScoURL()
+ "/Notes/formsemestre_bulletinetud?formsemestre_id=%s&amp;etudid=%s&amp;head_message=Validation%%20d'UE%%20enregistree" + "/Notes/formsemestre_bulletinetud?formsemestre_id=%s&etudid=%s&head_message=Validation%%20d'UE%%20enregistree"
% (formsemestre_id, etudid) % (formsemestre_id, etudid)
) )
@ -1289,7 +1289,7 @@ def get_etud_ue_cap_html(context, etudid, formsemestre_id, ue_id, REQUEST=None):
valid["s"] += " (<b>S%d</b>)" % valid["semestre_id"] valid["s"] += " (<b>S%d</b>)" % valid["semestre_id"]
valid["ds"] = formsemestre_id valid["ds"] = formsemestre_id
H.append( H.append(
'<li>%(code)s%(m)s%(s)s, le %(event_date)s <a class="stdlink" href="etud_ue_suppress_validation?etudid=%(etudid)s&amp;ue_id=%(ue_id)s&amp;formsemestre_id=%(ds)s" title="supprime cette validation">effacer</a></li>' '<li>%(code)s%(m)s%(s)s, le %(event_date)s <a class="stdlink" href="etud_ue_suppress_validation?etudid=%(etudid)s&ue_id=%(ue_id)s&formsemestre_id=%(ds)s" title="supprime cette validation">effacer</a></li>'
% valid % valid
) )
H.append("</ul></div>") H.append("</ul></div>")
@ -1311,7 +1311,7 @@ def etud_ue_suppress_validation(context, etudid, formsemestre_id, ue_id, REQUEST
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
context.NotesURL() context.NotesURL()
+ "/formsemestre_validate_previous_ue?etudid=%s&amp;formsemestre_id=%s" + "/formsemestre_validate_previous_ue?etudid=%s&formsemestre_id=%s"
% (etudid, formsemestre_id) % (etudid, formsemestre_id)
) )

View File

@ -847,13 +847,13 @@ def editPartitionForm(context, formsemestre_id=None, REQUEST=None):
) )
if i != 0: if i != 0:
H.append( H.append(
'<a href="partition_move?partition_id=%s&amp;after=0">%s</a>' '<a href="partition_move?partition_id=%s&after=0">%s</a>'
% (p["partition_id"], arrow_up) % (p["partition_id"], arrow_up)
) )
H.append('</td><td class="epnav">') H.append('</td><td class="epnav">')
if i < len(partitions) - 2: if i < len(partitions) - 2:
H.append( H.append(
'<a href="partition_move?partition_id=%s&amp;after=1">%s</a>' '<a href="partition_move?partition_id=%s&after=1">%s</a>'
% (p["partition_id"], arrow_down) % (p["partition_id"], arrow_down)
) )
i += 1 i += 1
@ -1494,7 +1494,7 @@ def form_group_choice(
def make_query_groups(group_ids): def make_query_groups(group_ids):
if group_ids: if group_ids:
return "&amp;".join(["group_ids%3Alist=" + group_id for group_id in group_ids]) return "&".join(["group_ids%3Alist=" + group_id for group_id in group_ids])
else: else:
return "" return ""

View File

@ -343,7 +343,7 @@ class DisplayedGroupsInfos:
gq = [] gq = []
for group_id in group_ids: for group_id in group_ids:
gq.append("group_ids=" + group_id) gq.append("group_ids=" + group_id)
self.groups_query_args = "&amp;".join(gq) self.groups_query_args = "&".join(gq)
self.base_url = REQUEST.URL0 + "?" + self.groups_query_args self.base_url = REQUEST.URL0 + "?" + self.groups_query_args
self.group_ids = group_ids self.group_ids = group_ids
self.groups = [] self.groups = []
@ -457,10 +457,10 @@ def groups_table(
with_archives = int(with_archives) with_archives = int(with_archives)
with_annotations = int(with_annotations) with_annotations = int(with_annotations)
base_url_np = groups_infos.base_url + "&amp;with_codes=%s" % with_codes base_url_np = groups_infos.base_url + "&with_codes=%s" % with_codes
base_url = ( base_url = (
base_url_np base_url_np
+ "&amp;with_paiement=%s&amp;with_archives=%s&amp;with_annotations=%s" + "&with_paiement=%s&with_archives=%s&with_annotations=%s"
% (with_paiement, with_archives, with_annotations) % (with_paiement, with_archives, with_annotations)
) )
# #
@ -668,11 +668,11 @@ def groups_table(
[ [
tab.html(), tab.html(),
"<ul>", "<ul>",
'<li><a class="stdlink" href="%s&amp;format=xlsappel">Feuille d\'appel Excel</a></li>' '<li><a class="stdlink" href="%s&format=xlsappel">Feuille d\'appel Excel</a></li>'
% (tab.base_url,), % (tab.base_url,),
'<li><a class="stdlink" href="%s&amp;format=xls">Table Excel</a></li>' '<li><a class="stdlink" href="%s&format=xls">Table Excel</a></li>'
% (tab.base_url,), % (tab.base_url,),
'<li><a class="stdlink" href="%s&amp;format=moodlecsv">Fichier CSV pour Moodle (groupe sélectionné)</a></li>' '<li><a class="stdlink" href="%s&format=moodlecsv">Fichier CSV pour Moodle (groupe sélectionné)</a></li>'
% (tab.base_url,), % (tab.base_url,),
"""<li> """<li>
<a class="stdlink" href="export_groups_as_moodle_csv?formsemestre_id=%s">Fichier CSV pour Moodle (tous les groupes)</a> <a class="stdlink" href="export_groups_as_moodle_csv?formsemestre_id=%s">Fichier CSV pour Moodle (tous les groupes)</a>
@ -824,7 +824,7 @@ def tab_absences_html(context, groups_infos, etat=None, REQUEST=None):
"<li>", "<li>",
form_choix_jour_saisie_hebdo(context, groups_infos, REQUEST=REQUEST), form_choix_jour_saisie_hebdo(context, groups_infos, REQUEST=REQUEST),
"</li>", "</li>",
"""<li><a class="stdlink" href="Absences/EtatAbsencesGr?%s&amp;debut=%s&amp;fin=%s">Etat des absences du groupe</a></li>""" """<li><a class="stdlink" href="Absences/EtatAbsencesGr?%s&debut=%s&fin=%s">Etat des absences du groupe</a></li>"""
% ( % (
groups_infos.groups_query_args, groups_infos.groups_query_args,
groups_infos.formsemestre["date_debut"], groups_infos.formsemestre["date_debut"],
@ -833,15 +833,15 @@ def tab_absences_html(context, groups_infos, etat=None, REQUEST=None):
"</ul>", "</ul>",
"<h3>Feuilles</h3>", "<h3>Feuilles</h3>",
'<ul class="ul_feuilles">', '<ul class="ul_feuilles">',
"""<li><a class="stdlink" href="%s&amp;format=xlsappel">Feuille d'émargement %s (Excel)</a></li>""" """<li><a class="stdlink" href="%s&format=xlsappel">Feuille d'émargement %s (Excel)</a></li>"""
% (groups_infos.base_url, groups_infos.groups_titles), % (groups_infos.base_url, groups_infos.groups_titles),
"""<li><a class="stdlink" href="trombino?%s&amp;format=pdf">Trombinoscope en PDF</a></li>""" """<li><a class="stdlink" href="trombino?%s&format=pdf">Trombinoscope en PDF</a></li>"""
% groups_infos.groups_query_args, % groups_infos.groups_query_args,
"""<li><a class="stdlink" href="pdf_trombino_tours?%s&amp;format=pdf">Trombinoscope en PDF (format "IUT de Tours", beta)</a></li>""" """<li><a class="stdlink" href="pdf_trombino_tours?%s&format=pdf">Trombinoscope en PDF (format "IUT de Tours", beta)</a></li>"""
% groups_infos.groups_query_args, % groups_infos.groups_query_args,
"""<li><a class="stdlink" href="pdf_feuille_releve_absences?%s&amp;format=pdf">Feuille relevé absences hebdomadaire (beta)</a></li>""" """<li><a class="stdlink" href="pdf_feuille_releve_absences?%s&format=pdf">Feuille relevé absences hebdomadaire (beta)</a></li>"""
% groups_infos.groups_query_args, % groups_infos.groups_query_args,
"""<li><a class="stdlink" href="trombino?%s&amp;format=pdflist">Liste d'appel avec photos</a></li>""" """<li><a class="stdlink" href="trombino?%s&format=pdflist">Liste d'appel avec photos</a></li>"""
% groups_infos.groups_query_args, % groups_infos.groups_query_args,
"</ul>", "</ul>",
] ]
@ -853,7 +853,7 @@ def tab_absences_html(context, groups_infos, etat=None, REQUEST=None):
group_id = sco_groups.get_default_group(context, groups_infos.formsemestre_id) group_id = sco_groups.get_default_group(context, groups_infos.formsemestre_id)
if authuser.has_permission(ScoEtudInscrit, context): if authuser.has_permission(ScoEtudInscrit, context):
H.append( H.append(
'<li><a class="stdlink" href="check_group_apogee?group_id=%s&amp;etat=%s">Vérifier codes Apogée</a> (de tous les groupes)</li>' '<li><a class="stdlink" href="check_group_apogee?group_id=%s&etat=%s">Vérifier codes Apogée</a> (de tous les groupes)</li>'
% (group_id, etat or "") % (group_id, etat or "")
) )
# Lien pour ajout fichiers étudiants # Lien pour ajout fichiers étudiants

View File

@ -552,7 +552,7 @@ def etuds_select_boxes(
H.append(")") H.append(")")
if base_url and etuds: if base_url and etuds:
H.append( H.append(
'<a href="%s&amp;export_cat_xls=%s">%s</a>&nbsp;' '<a href="%s&export_cat_xls=%s">%s</a>&nbsp;'
% (base_url, src_cat, scu.ICON_XLS) % (base_url, src_cat, scu.ICON_XLS)
) )
H.append("</div>") H.append("</div>")

View File

@ -314,7 +314,7 @@ def _make_table_notes(
"_code_td_attrs": 'style="padding-left: 1em; padding-right: 2em;"', "_code_td_attrs": 'style="padding-left: 1em; padding-right: 2em;"',
"etudid": etudid, "etudid": etudid,
"nom": scu.strupper(etud["nom"]), "nom": scu.strupper(etud["nom"]),
"_nomprenom_target": "formsemestre_bulletinetud?formsemestre_id=%s&amp;etudid=%s" "_nomprenom_target": "formsemestre_bulletinetud?formsemestre_id=%s&etudid=%s"
% (M["formsemestre_id"], etudid), % (M["formsemestre_id"], etudid),
"_nomprenom_td_attrs": 'id="%s" class="etudinfo"' % (etud["etudid"]), "_nomprenom_td_attrs": 'id="%s" class="etudinfo"' % (etud["etudid"]),
"prenom": scu.strcapitalize(scu.strlower(etud["prenom"])), "prenom": scu.strcapitalize(scu.strlower(etud["prenom"])),
@ -420,15 +420,15 @@ def _make_table_notes(
columns_ids.append("comment") columns_ids.append("comment")
# titres divers: # titres divers:
gl = "".join(["&amp;group_ids%3Alist=" + g for g in group_ids]) gl = "".join(["&group_ids%3Alist=" + g for g in group_ids])
if note_sur_20: if note_sur_20:
gl = "&amp;note_sur_20%3Alist=yes" + gl gl = "&note_sur_20%3Alist=yes" + gl
if anonymous_listing: if anonymous_listing:
gl = "&amp;anonymous_listing%3Alist=yes" + gl gl = "&anonymous_listing%3Alist=yes" + gl
if hide_groups: if hide_groups:
gl = "&amp;hide_groups%3Alist=yes" + gl gl = "&hide_groups%3Alist=yes" + gl
if with_emails: if with_emails:
gl = "&amp;with_emails%3Alist=yes" + gl gl = "&with_emails%3Alist=yes" + gl
if len(evals) == 1: if len(evals) == 1:
evalname = "%s-%s" % (Mod["code"], ndb.DateDMYtoISO(E["jour"])) evalname = "%s-%s" % (Mod["code"], ndb.DateDMYtoISO(E["jour"]))
hh = "%s, %s (%d étudiants)" % (E["description"], gr_title, len(etudids)) hh = "%s, %s (%d étudiants)" % (E["description"], gr_title, len(etudids))
@ -808,7 +808,7 @@ def evaluation_check_absences_html(
) )
if linkabs: if linkabs:
H.append( H.append(
'<a class="stdlink" href="Absences/doSignaleAbsence?etudid=%s&amp;datedebut=%s&amp;datefin=%s&amp;demijournee=%s&amp;moduleimpl_id=%s">signaler cette absence</a>' '<a class="stdlink" href="Absences/doSignaleAbsence?etudid=%s&datedebut=%s&datefin=%s&demijournee=%s&moduleimpl_id=%s">signaler cette absence</a>'
% ( % (
etud["etudid"], etud["etudid"],
urllib.quote(E["jour"]), urllib.quote(E["jour"]),

View File

@ -182,9 +182,9 @@ def formsemestre_etuds_lycees(
) )
tab.base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id) tab.base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id)
if only_primo: if only_primo:
tab.base_url += "&amp;only_primo=1" tab.base_url += "&only_primo=1"
if no_grouping: if no_grouping:
tab.base_url += "&amp;no_grouping=1" tab.base_url += "&no_grouping=1"
t = tab.make_page(context, format=format, with_html_headers=False, REQUEST=REQUEST) t = tab.make_page(context, format=format, with_html_headers=False, REQUEST=REQUEST)
if format != "html": if format != "html":
return t return t

View File

@ -367,14 +367,14 @@ def moduleimpl_inscriptions_stats(context, formsemestre_id, REQUEST=None):
) )
if can_change: if can_change:
H.append( H.append(
'<div><a class="stdlink" href="etud_desinscrit_ue?etudid=%s&amp;formsemestre_id=%s&amp;ue_id=%s">désinscrire des modules de cette UE</a></div>' '<div><a class="stdlink" href="etud_desinscrit_ue?etudid=%s&formsemestre_id=%s&ue_id=%s">désinscrire des modules de cette UE</a></div>'
% (etud["etudid"], formsemestre_id, ue["ue_id"]) % (etud["etudid"], formsemestre_id, ue["ue_id"])
) )
else: else:
H.append("(non réinscrit dans cette UE)") H.append("(non réinscrit dans cette UE)")
if can_change: if can_change:
H.append( H.append(
'<div><a class="stdlink" href="etud_inscrit_ue?etudid=%s&amp;formsemestre_id=%s&amp;ue_id=%s">inscrire à tous les modules de cette UE</a></div>' '<div><a class="stdlink" href="etud_inscrit_ue?etudid=%s&formsemestre_id=%s&ue_id=%s">inscrire à tous les modules de cette UE</a></div>'
% (etud["etudid"], formsemestre_id, ue["ue_id"]) % (etud["etudid"], formsemestre_id, ue["ue_id"])
) )
H.append("</li>") H.append("</li>")

View File

@ -122,7 +122,7 @@ def moduleimpl_evaluation_menu(context, evaluation_id, nbnotes=0, REQUEST=None):
}, },
{ {
"title": "Absences ce jour", "title": "Absences ce jour",
"url": "Absences/EtatAbsencesDate?date=%s&amp;group_ids=%s" "url": "Absences/EtatAbsencesDate?date=%s&group_ids=%s"
% (urllib.quote(E["jour"], safe=""), group_id), % (urllib.quote(E["jour"], safe=""), group_id),
"enabled": E["jour"], "enabled": E["jour"],
}, },
@ -322,7 +322,7 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
if sem["etat"] == "1": # non verrouillé if sem["etat"] == "1": # non verrouillé
top_table_links = ( top_table_links = (
"""<a class="stdlink" href="evaluation_create?moduleimpl_id=%(moduleimpl_id)s">Créer nouvelle évaluation</a> """<a class="stdlink" 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&amp;redirect=1">Trier par date</a> <a class="stdlink" style="margin-left:2em;" href="module_evaluation_renumber?moduleimpl_id=%(moduleimpl_id)s&redirect=1">Trier par date</a>
""" """
% M % M
) )
@ -384,14 +384,14 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
H.append('<span class="eval_arrows_chld">') H.append('<span class="eval_arrows_chld">')
if eval_index != (len(ModEvals) - 1) and caneditevals: if eval_index != (len(ModEvals) - 1) and caneditevals:
H.append( H.append(
'<a href="module_evaluation_move?evaluation_id=%s&amp;after=0" class="aud">%s</a>' '<a href="module_evaluation_move?evaluation_id=%s&after=0" class="aud">%s</a>'
% (eval["evaluation_id"], arrow_up) % (eval["evaluation_id"], arrow_up)
) )
else: else:
H.append(arrow_none) H.append(arrow_none)
if (eval_index > 0) and caneditevals: if (eval_index > 0) and caneditevals:
H.append( H.append(
'<a href="module_evaluation_move?evaluation_id=%s&amp;after=1" class="aud">%s</a>' '<a href="module_evaluation_move?evaluation_id=%s&after=1" class="aud">%s</a>'
% (eval["evaluation_id"], arrow_down) % (eval["evaluation_id"], arrow_down)
) )
else: else:
@ -546,7 +546,7 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
if gr_moyenne["gr_nb_notes"] > 0: if gr_moyenne["gr_nb_notes"] > 0:
H.append("%(gr_moy)s" % gr_moyenne) H.append("%(gr_moy)s" % gr_moyenne)
H.append( H.append(
"""&nbsp; (<a href="evaluation_listenotes?tf-submitted=1&amp;evaluation_id=%s&amp;group_ids%%3Alist=%s">%s notes</a>""" """&nbsp; (<a href="evaluation_listenotes?tf-submitted=1&evaluation_id=%s&group_ids%%3Alist=%s">%s notes</a>"""
% ( % (
eval["evaluation_id"], eval["evaluation_id"],
gr_moyenne["group_id"], gr_moyenne["group_id"],
@ -563,7 +563,7 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
H.append("""[<font color="red">""") H.append("""[<font color="red">""")
if caneditnotes: if caneditnotes:
H.append( H.append(
"""<a class="redlink" href="saisie_notes?evaluation_id=%s&amp;group_ids:list=%s">incomplet</a></font>]""" """<a class="redlink" href="saisie_notes?evaluation_id=%s&group_ids:list=%s">incomplet</a></font>]"""
% (eval["evaluation_id"], gr_moyenne["group_id"]) % (eval["evaluation_id"], gr_moyenne["group_id"])
) )
else: else:
@ -572,7 +572,7 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
H.append("""<span class="redboldtext">&nbsp; """) H.append("""<span class="redboldtext">&nbsp; """)
if caneditnotes: if caneditnotes:
H.append( H.append(
"""<a class="redlink" href="saisie_notes?evaluation_id=%s&amp;group_ids:list=%s">""" """<a class="redlink" href="saisie_notes?evaluation_id=%s&group_ids:list=%s">"""
% (eval["evaluation_id"], gr_moyenne["group_id"]) % (eval["evaluation_id"], gr_moyenne["group_id"])
) )
H.append("pas de notes") H.append("pas de notes")

View File

@ -75,12 +75,12 @@ def _menuScolarite(context, authuser, sem, etudid):
if ins["etat"] != "D": if ins["etat"] != "D":
dem_title = "Démission" dem_title = "Démission"
dem_url = ( dem_url = (
"formDem?etudid=%(etudid)s&amp;formsemestre_id=%(formsemestre_id)s" % args "formDem?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s" % args
) )
else: else:
dem_title = "Annuler la démission" dem_title = "Annuler la démission"
dem_url = ( dem_url = (
"doCancelDem?etudid=%(etudid)s&amp;formsemestre_id=%(formsemestre_id)s" "doCancelDem?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s"
% args % args
) )
@ -88,12 +88,12 @@ def _menuScolarite(context, authuser, sem, etudid):
if ins["etat"] != sco_codes_parcours.DEF: if ins["etat"] != sco_codes_parcours.DEF:
def_title = "Déclarer défaillance" def_title = "Déclarer défaillance"
def_url = ( def_url = (
"formDef?etudid=%(etudid)s&amp;formsemestre_id=%(formsemestre_id)s" % args "formDef?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s" % args
) )
elif ins["etat"] == sco_codes_parcours.DEF: elif ins["etat"] == sco_codes_parcours.DEF:
def_title = "Annuler la défaillance" def_title = "Annuler la défaillance"
def_url = ( def_url = (
"doCancelDef?etudid=%(etudid)s&amp;formsemestre_id=%(formsemestre_id)s" "doCancelDef?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s"
% args % args
) )
def_enabled = ( def_enabled = (
@ -103,7 +103,7 @@ def _menuScolarite(context, authuser, sem, etudid):
) )
items = [ items = [
# { 'title' : 'Changer de groupe', # { 'title' : 'Changer de groupe',
# 'url' : 'formChangeGroup?etudid=%s&amp;formsemestre_id=%s' % (etudid,ins['formsemestre_id']), # 'url' : 'formChangeGroup?etudid=%s&formsemestre_id=%s' % (etudid,ins['formsemestre_id']),
# 'enabled' : authuser.has_permission(ScoEtudChangeGroups,context) and not locked, # 'enabled' : authuser.has_permission(ScoEtudChangeGroups,context) and not locked,
# }, # },
{ {
@ -113,20 +113,20 @@ def _menuScolarite(context, authuser, sem, etudid):
}, },
{ {
"title": "Validation du semestre (jury)", "title": "Validation du semestre (jury)",
"url": "Notes/formsemestre_validation_etud_form?etudid=%(etudid)s&amp;formsemestre_id=%(formsemestre_id)s" "url": "Notes/formsemestre_validation_etud_form?etudid=%(etudid)s&formsemestre_id=%(formsemestre_id)s"
% args, % args,
"enabled": authuser.has_permission(ScoEtudInscrit, context) and not locked, "enabled": authuser.has_permission(ScoEtudInscrit, context) and not locked,
}, },
{"title": def_title, "url": def_url, "enabled": def_enabled}, {"title": def_title, "url": def_url, "enabled": def_enabled},
{ {
"title": "Inscrire à un module optionnel (ou au sport)", "title": "Inscrire à un module optionnel (ou au sport)",
"url": "Notes/formsemestre_inscription_option?formsemestre_id=%(formsemestre_id)s&amp;etudid=%(etudid)s" "url": "Notes/formsemestre_inscription_option?formsemestre_id=%(formsemestre_id)s&etudid=%(etudid)s"
% args, % args,
"enabled": authuser.has_permission(ScoEtudInscrit, context) and not locked, "enabled": authuser.has_permission(ScoEtudInscrit, context) and not locked,
}, },
{ {
"title": "Désinscrire (en cas d'erreur)", "title": "Désinscrire (en cas d'erreur)",
"url": "Notes/formsemestre_desinscription?formsemestre_id=%(formsemestre_id)s&amp;etudid=%(etudid)s" "url": "Notes/formsemestre_desinscription?formsemestre_id=%(formsemestre_id)s&etudid=%(etudid)s"
% args, % args,
"enabled": authuser.has_permission(ScoEtudInscrit, context) and not locked, "enabled": authuser.has_permission(ScoEtudInscrit, context) and not locked,
}, },
@ -138,7 +138,7 @@ def _menuScolarite(context, authuser, sem, etudid):
}, },
{ {
"title": "Enregistrer un semestre effectué ailleurs", "title": "Enregistrer un semestre effectué ailleurs",
"url": "Notes/formsemestre_ext_create_form?formsemestre_id=%(formsemestre_id)s&amp;etudid=%(etudid)s" "url": "Notes/formsemestre_ext_create_form?formsemestre_id=%(formsemestre_id)s&etudid=%(etudid)s"
% args, % args,
"enabled": authuser.has_permission(ScoImplement, context), "enabled": authuser.has_permission(ScoImplement, context),
}, },
@ -290,7 +290,7 @@ def ficheEtud(context, etudid=None, REQUEST=None):
else: else:
a[ a[
"dellink" "dellink"
] = '<td class="annodel"><a href="doSuppressAnnotation?etudid=%s&amp;annotation_id=%s">%s</a></td>' % ( ] = '<td class="annodel"><a href="doSuppressAnnotation?etudid=%s&annotation_id=%s">%s</a></td>' % (
etudid, etudid,
a["id"], a["id"],
scu.icontag( scu.icontag(
@ -394,7 +394,7 @@ def ficheEtud(context, etudid=None, REQUEST=None):
# Inscriptions # Inscriptions
if info["sems"]: # XXX rcl unused ? à voir if info["sems"]: # XXX rcl unused ? à voir
rcl = ( rcl = (
"""(<a href="%(ScoURL)s/Notes/formsemestre_validation_etud_form?check=1&amp;etudid=%(etudid)s&amp;formsemestre_id=%(last_formsemestre_id)s&amp;desturl=ficheEtud?etudid=%(etudid)s">récapitulatif parcours</a>)""" """(<a href="%(ScoURL)s/Notes/formsemestre_validation_etud_form?check=1&etudid=%(etudid)s&formsemestre_id=%(last_formsemestre_id)s&desturl=ficheEtud?etudid=%(etudid)s">récapitulatif parcours</a>)"""
% info % info
) )
else: else:

View File

@ -205,7 +205,7 @@ def do_placement_selectetuds(context, REQUEST):
if columns in ("3", "4", "5", "6", "7", "8"): if columns in ("3", "4", "5", "6", "7", "8"):
gs = [("group_ids%3Alist=" + urllib.quote_plus(x)) for x in group_ids] gs = [("group_ids%3Alist=" + urllib.quote_plus(x)) for x in group_ids]
query = ( query = (
"evaluation_id=%s&amp;placement_method=%s&amp;teachers=%s&amp;building=%s&amp;room=%s&amp;columns=%s&amp;numbering=%s&amp;" "evaluation_id=%s&placement_method=%s&teachers=%s&building=%s&room=%s&columns=%s&numbering=%s&"
% ( % (
evaluation_id, evaluation_id,
placement_method, placement_method,
@ -215,7 +215,7 @@ def do_placement_selectetuds(context, REQUEST):
columns, columns,
numbering, numbering,
) )
+ "&amp;".join(gs) + "&".join(gs)
) )
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
context.NotesURL() + "/do_placement?" + query context.NotesURL() + "/do_placement?" + query

View File

@ -867,7 +867,7 @@ def formsemestre_lettres_individuelles(
PDFLOCK.release() PDFLOCK.release()
if not pdfdoc: if not pdfdoc:
return REQUEST.RESPONSE.redirect( return REQUEST.RESPONSE.redirect(
"formsemestre_status?formsemestre_id={}&amp;head_message=Aucun%20%C3%A9tudiant%20n%27a%20de%20d%C3%A9cision%20de%20jury".format( "formsemestre_status?formsemestre_id={}&head_message=Aucun%20%C3%A9tudiant%20n%27a%20de%20d%C3%A9cision%20de%20jury".format(
formsemestre_id formsemestre_id
) )
) )

View File

@ -173,7 +173,7 @@ def formsemestre_recapcomplet(
) )
else: else:
H.append( H.append(
"""<a class="stdlink" href="formsemestre_recapcomplet?formsemestre_id=%s&amp;modejury=1&amp;hidemodules=1">Saisie des décisions du jury</a>""" """<a class="stdlink" href="formsemestre_recapcomplet?formsemestre_id=%s&modejury=1&hidemodules=1">Saisie des décisions du jury</a>"""
% formsemestre_id % formsemestre_id
) )
H.append("</p>") H.append("</p>")
@ -556,9 +556,9 @@ def make_formsemestre_recapcomplet(
""" """
<script type="text/javascript"> <script type="text/javascript">
function va_saisir(formsemestre_id, etudid) { function va_saisir(formsemestre_id, etudid) {
loc = 'formsemestre_validation_etud_form?formsemestre_id='+formsemestre_id+'&amp;etudid='+etudid; loc = 'formsemestre_validation_etud_form?formsemestre_id='+formsemestre_id+'&etudid='+etudid;
if (SORT_COLUMN_INDEX) { if (SORT_COLUMN_INDEX) {
loc += '&amp;sortcol=' + SORT_COLUMN_INDEX; loc += '&sortcol=' + SORT_COLUMN_INDEX;
} }
loc += '#etudid' + etudid; loc += '#etudid' + etudid;
document.location=loc; document.location=loc;
@ -620,7 +620,7 @@ def make_formsemestre_recapcomplet(
if disable_etudlink: if disable_etudlink:
etudlink = "%(name)s" etudlink = "%(name)s"
else: else:
etudlink = '<a href="formsemestre_bulletinetud?formsemestre_id=%(formsemestre_id)s&amp;etudid=%(etudid)s&amp;version=selectedevals" id="%(etudid)s" class="etudinfo">%(name)s</a>' etudlink = '<a href="formsemestre_bulletinetud?formsemestre_id=%(formsemestre_id)s&etudid=%(etudid)s&version=selectedevals" id="%(etudid)s" class="etudinfo">%(name)s</a>'
ir = 0 ir = 0
nblines = len(F) - 1 nblines = len(F) - 1
for l in F[1:]: for l in F[1:]:
@ -716,7 +716,7 @@ def make_formsemestre_recapcomplet(
act = "saisir" act = "saisir"
cells += '<td class="decision">%s' % code cells += '<td class="decision">%s' % code
if act: if act:
# cells += ' <a href="formsemestre_validation_etud_form?formsemestre_id=%s&amp;etudid=%s">%s</a>' % (formsemestre_id, etudid, act) # cells += ' <a href="formsemestre_validation_etud_form?formsemestre_id=%s&etudid=%s">%s</a>' % (formsemestre_id, etudid, act)
cells += ( cells += (
""" <a href="#" onclick="va_saisir('%s', '%s')">%s</a>""" """ <a href="#" onclick="va_saisir('%s', '%s')">%s</a>"""
% (formsemestre_id, etudid, act) % (formsemestre_id, etudid, act)

View File

@ -228,7 +228,7 @@ def formsemestre_report(
tab.html_caption = "Répartition des résultats par %s." % category_name tab.html_caption = "Répartition des résultats par %s." % category_name
tab.base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id) tab.base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id)
if only_primo: if only_primo:
tab.base_url += "&amp;only_primo=on" tab.base_url += "&only_primo=on"
return tab return tab
@ -698,27 +698,27 @@ def formsemestre_suivi_cohorte(
only_primo=only_primo, only_primo=only_primo,
) )
tab.base_url = ( tab.base_url = (
"%s?formsemestre_id=%s&amp;percent=%s&amp;bac=%s&amp;bacspecialite=%s&amp;civilite=%s" "%s?formsemestre_id=%s&percent=%s&bac=%s&bacspecialite=%s&civilite=%s"
% (REQUEST.URL0, formsemestre_id, percent, bac, bacspecialite, civilite) % (REQUEST.URL0, formsemestre_id, percent, bac, bacspecialite, civilite)
) )
if only_primo: if only_primo:
tab.base_url += "&amp;only_primo=on" tab.base_url += "&only_primo=on"
t = tab.make_page(context, format=format, with_html_headers=False, REQUEST=REQUEST) t = tab.make_page(context, format=format, with_html_headers=False, REQUEST=REQUEST)
if format != "html": if format != "html":
return t return t
base_url = REQUEST.URL0 base_url = REQUEST.URL0
burl = ( burl = (
"%s?formsemestre_id=%s&amp;bac=%s&amp;bacspecialite=%s&amp;civilite=%s&amp;statut=%s" "%s?formsemestre_id=%s&bac=%s&bacspecialite=%s&civilite=%s&statut=%s"
% (base_url, formsemestre_id, bac, bacspecialite, civilite, statut) % (base_url, formsemestre_id, bac, bacspecialite, civilite, statut)
) )
if percent: if percent:
pplink = ( pplink = (
'<p><a href="%s&amp;percent=0">Afficher les résultats bruts</a></p>' % burl '<p><a href="%s&percent=0">Afficher les résultats bruts</a></p>' % burl
) )
else: else:
pplink = ( pplink = (
'<p><a href="%s&amp;percent=1">Afficher les résultats en pourcentages</a></p>' '<p><a href="%s&percent=1">Afficher les résultats en pourcentages</a></p>'
% burl % burl
) )
help = ( help = (
@ -1191,9 +1191,9 @@ def formsemestre_suivi_parcours(
) )
tab.base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id) tab.base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id)
if only_primo: if only_primo:
tab.base_url += "&amp;only_primo=1" tab.base_url += "&only_primo=1"
if no_grouping: if no_grouping:
tab.base_url += "&amp;no_grouping=1" tab.base_url += "&no_grouping=1"
t = tab.make_page(context, format=format, with_html_headers=False, REQUEST=REQUEST) t = tab.make_page(context, format=format, with_html_headers=False, REQUEST=REQUEST)
if format != "html": if format != "html":
return t return t
@ -1503,11 +1503,11 @@ def formsemestre_graph_parcours(
return doc return doc
elif format == "html": elif format == "html":
if only_primo: if only_primo:
op = "only_primo=on&amp;" op = "only_primo=on&"
else: else:
op = "" op = ""
url = urllib.quote( url = urllib.quote(
"formsemestre_graph_parcours?formsemestre_id=%s&amp;%sbac=%s&amp;bacspecialite=%s&amp;civilite=%s&amp;statut=%s&amp;format=" "formsemestre_graph_parcours?formsemestre_id=%s&%sbac=%s&bacspecialite=%s&civilite=%s&statut=%s&format="
% (formsemestre_id, op, bac, bacspecialite, civilite, statut) % (formsemestre_id, op, bac, bacspecialite, civilite, statut)
) )
( (

View File

@ -101,7 +101,7 @@ def formsemestre_synchro_etuds(
if not sem["etapes"]: if not sem["etapes"]:
raise ScoValueError( raise ScoValueError(
"""opération impossible: ce semestre n'a pas de code étape """opération impossible: ce semestre n'a pas de code étape
(voir "<a href="formsemestre_editwithmodules?formation_id=%(formation_id)s&amp;formsemestre_id=%(formsemestre_id)s">Modifier ce semestre</a>") (voir "<a href="formsemestre_editwithmodules?formation_id=%(formation_id)s&formsemestre_id=%(formsemestre_id)s">Modifier ce semestre</a>")
""" """
% sem % sem
) )
@ -109,7 +109,7 @@ def formsemestre_synchro_etuds(
footer = context.sco_footer(REQUEST) footer = context.sco_footer(REQUEST)
base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id) base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id)
if anneeapogee: if anneeapogee:
base_url += "&amp;anneeapogee=%s" % anneeapogee base_url += "&anneeapogee=%s" % anneeapogee
if anneeapogee == None: # année d'inscription par défaut if anneeapogee == None: # année d'inscription par défaut
anneeapogee = str( anneeapogee = str(
@ -310,7 +310,7 @@ def build_page(
""" """
% sem, % sem,
""" """
Année Apogée: <select id="anneeapogee" name="anneeapogee" onchange="document.location='formsemestre_synchro_etuds?formsemestre_id=%s&amp;anneeapogee='+document.getElementById('anneeapogee').value">""" Année Apogée: <select id="anneeapogee" name="anneeapogee" onchange="document.location='formsemestre_synchro_etuds?formsemestre_id=%s&anneeapogee='+document.getElementById('anneeapogee').value">"""
% (sem["formsemestre_id"]), % (sem["formsemestre_id"]),
"\n".join(options), "\n".join(options),
""" """

View File

@ -109,7 +109,7 @@ def trombino_html(context, groups_infos, REQUEST=None):
{"title": "Charger des photos...", "url": "photos_import_files_form?%s" % args}, {"title": "Charger des photos...", "url": "photos_import_files_form?%s" % args},
{ {
"title": "Obtenir archive Zip des photos", "title": "Obtenir archive Zip des photos",
"url": "trombino?%s&amp;format=zip" % args, "url": "trombino?%s&format=zip" % args,
}, },
{ {
"title": "Recopier les photos depuis le portail", "title": "Recopier les photos depuis le portail",
@ -162,7 +162,7 @@ def trombino_html(context, groups_infos, REQUEST=None):
H.append("</div>") H.append("</div>")
H.append( H.append(
'<div style="margin-bottom:15px;"><a class="stdlink" href="trombino?format=pdf&amp;%s">Version PDF</a></div>' '<div style="margin-bottom:15px;"><a class="stdlink" href="trombino?format=pdf&%s">Version PDF</a></div>'
% args % args
) )
return "\n".join(H) return "\n".join(H)
@ -190,11 +190,11 @@ def check_local_photos_availability(context, groups_infos, REQUEST, format=""):
% ( % (
nb_missing, nb_missing,
groups_infos.base_url groups_infos.base_url
+ "&amp;dialog_confirmed=1&amp;format=%s" % format, + "&dialog_confirmed=1&format=%s" % format,
), ),
dest_url="trombino", dest_url="trombino",
OK="Exporter seulement les photos existantes", OK="Exporter seulement les photos existantes",
cancel_url="groups_view?curtab=tab-photos&amp;" cancel_url="groups_view?curtab=tab-photos&"
+ groups_infos.groups_query_args, + groups_infos.groups_query_args,
REQUEST=REQUEST, REQUEST=REQUEST,
parameters=parameters, parameters=parameters,
@ -239,7 +239,7 @@ def trombino_copy_photos(context, group_ids=[], REQUEST=None, dialog_confirmed=F
groups_infos = sco_groups_view.DisplayedGroupsInfos( groups_infos = sco_groups_view.DisplayedGroupsInfos(
context, group_ids, REQUEST=REQUEST context, group_ids, REQUEST=REQUEST
) )
back_url = "groups_view?%s&amp;curtab=tab-photos" % groups_infos.groups_query_args back_url = "groups_view?%s&curtab=tab-photos" % groups_infos.groups_query_args
portal_url = sco_portal_apogee.get_portal_url(context) portal_url = sco_portal_apogee.get_portal_url(context)
header = context.sco_header(REQUEST, page_title="Chargement des photos") header = context.sco_header(REQUEST, page_title="Chargement des photos")
@ -486,7 +486,7 @@ def photos_import_files_form(context, group_ids=[], REQUEST=None):
groups_infos = sco_groups_view.DisplayedGroupsInfos( groups_infos = sco_groups_view.DisplayedGroupsInfos(
context, group_ids, REQUEST=REQUEST context, group_ids, REQUEST=REQUEST
) )
back_url = "groups_view?%s&amp;curtab=tab-photos" % groups_infos.groups_query_args back_url = "groups_view?%s&curtab=tab-photos" % groups_infos.groups_query_args
H = [ H = [
context.sco_header(REQUEST, page_title="Import des photos des étudiants"), context.sco_header(REQUEST, page_title="Import des photos des étudiants"),
@ -550,7 +550,7 @@ def photos_import_files(
zip_excel_import_files( zip_excel_import_files(
context, xlsfile, zipfile, REQUEST, callback, filename_title, page_title context, xlsfile, zipfile, REQUEST, callback, filename_title, page_title
) )
return REQUEST.RESPONSE.redirect(back_url + "&amp;head_message=photos%20 importees") return REQUEST.RESPONSE.redirect(back_url + "&head_message=photos%20 importees")
def zip_excel_import_files( def zip_excel_import_files(

View File

@ -320,7 +320,7 @@ def external_ue_create_form(context, formsemestre_id, etudid, REQUEST=None):
cancelbutton="Annuler", cancelbutton="Annuler",
) )
bull_url = "formsemestre_bulletinetud?formsemestre_id=%s&amp;etudid=%s" % ( bull_url = "formsemestre_bulletinetud?formsemestre_id=%s&etudid=%s" % (
formsemestre_id, formsemestre_id,
etudid, etudid,
) )