forked from ScoDoc/ScoDoc
EDT: améliore gestion erreur chargement ics
This commit is contained in:
parent
324488f9c4
commit
098502f2d3
@ -565,7 +565,9 @@ def save_groups_auto_assignment(formsemestre_id: int):
|
||||
@permission_required(Permission.ScoView)
|
||||
@as_json
|
||||
def formsemestre_edt(formsemestre_id: int):
|
||||
"""l'emploi du temps du semestre"""
|
||||
"""l'emploi du temps du semestre
|
||||
Si ok, une liste d'évènements. Sinon, une chaine indiquant un message d'erreur.
|
||||
"""
|
||||
query = FormSemestre.query.filter_by(id=formsemestre_id)
|
||||
if g.scodoc_dept:
|
||||
query = query.filter_by(dept_id=g.scodoc_dept_id)
|
||||
|
@ -58,13 +58,31 @@ def formsemestre_load_calendar(
|
||||
try:
|
||||
with open(ics_filename, "rb") as file:
|
||||
log(f"Loading edt from {ics_filename}")
|
||||
calendar = icalendar.Calendar.from_ical(file.read())
|
||||
except FileNotFoundError:
|
||||
flash("erreur chargement du calendrier")
|
||||
try:
|
||||
calendar = icalendar.Calendar.from_ical(file.read())
|
||||
except ValueError as exc:
|
||||
log(
|
||||
f"""formsemestre_load_calendar: error importing ics for {
|
||||
formsemestre}\npath='{ics_filename}'"""
|
||||
)
|
||||
raise ScoValueError(
|
||||
f"calendrier ics illisible (edt_id={edt_id})"
|
||||
) from exc
|
||||
except FileNotFoundError as exc:
|
||||
log(
|
||||
f"formsemestre_load_calendar: ics not found for {formsemestre}\npath='{ics_filename}'"
|
||||
)
|
||||
return None
|
||||
raise ScoValueError(
|
||||
f"Fichier ics introuvable (filename={ics_filename})"
|
||||
) from exc
|
||||
except PermissionError as exc:
|
||||
log(
|
||||
f"""formsemestre_load_calendar: permission denied for {formsemestre
|
||||
}\npath='{ics_filename}'"""
|
||||
)
|
||||
raise ScoValueError(
|
||||
f"Fichier ics inaccessible: vérifier permissions (filename={ics_filename})"
|
||||
) from exc
|
||||
|
||||
return calendar
|
||||
|
||||
@ -88,7 +106,10 @@ def formsemestre_edt_dict(formsemestre: FormSemestre) -> list[dict]:
|
||||
Fonction appellée par l'API /formsemestre/<int:formsemestre_id>/edt
|
||||
TODO: spécifier intervalle de dates start et end
|
||||
"""
|
||||
events_scodoc = _load_and_convert_ics(formsemestre)
|
||||
try:
|
||||
events_scodoc = _load_and_convert_ics(formsemestre)
|
||||
except ScoValueError as exc:
|
||||
return exc.args[0]
|
||||
# Génération des événements pour le calendrier html
|
||||
events_cal = []
|
||||
for event in events_scodoc:
|
||||
|
@ -95,7 +95,12 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
fetch(`${SCO_URL}/../api/formsemestre/{{formsemestre.id}}/edt`)
|
||||
.then(r=>{return r.json()})
|
||||
.then(events=>{
|
||||
calendar.createEvents(events);
|
||||
if (typeof events == 'string') {
|
||||
// error !
|
||||
alert("error: " + events)
|
||||
} else {
|
||||
calendar.createEvents(events);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
# -*- mode: python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
SCOVERSION = "9.6.53"
|
||||
SCOVERSION = "9.6.54"
|
||||
|
||||
SCONAME = "ScoDoc"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user