diff --git a/.gitignore b/.gitignore index 22d1be8bc4664d96e21b2cf72bafa2cae0fafeaa..ec245bea3f1603a7f554c2e252fbcc92b1670e1c 100644 --- a/.gitignore +++ b/.gitignore @@ -175,7 +175,7 @@ Thumbs.db copy # Symlinks static ScoDoc -app/static/links/[0-9]*.*[0-9] +app/static/links/[0-9]*.* # Essais locaux xp/ diff --git a/app/__init__.py b/app/__init__.py index aab9ef3f563350044fb6426cba8907b0bb2249ec..b3944de7ce62475e16e5e5647b1a9b46e6b8efbc 100755 --- a/app/__init__.py +++ b/app/__init__.py @@ -255,7 +255,7 @@ class ScoSMTPHandler(SMTPHandler): return subject -class ReverseProxied(object): +class ReverseProxied: """Adaptateur wsgi qui nous permet d'avoir toutes les URL calculées en https sauf quand on est en dev. La variable HTTP_X_FORWARDED_PROTO est positionnée par notre config nginx""" @@ -649,8 +649,6 @@ def scodoc_flash_status_messages(): def critical_error(msg): """Handle a critical error: flush all caches, display message to the user""" - import app.scodoc.sco_utils as scu - log(f"\n*** CRITICAL ERROR: {msg}") subject = f"CRITICAL ERROR: {msg}".strip()[:68] send_scodoc_alarm(subject, msg) diff --git a/app/scodoc/sco_edit_ue.py b/app/scodoc/sco_edit_ue.py index 48e1c90ac07c3be647dae027abf2ad7f624a82ed..40989539e2d2a1297565b029386f398ebd2da32a 100644 --- a/app/scodoc/sco_edit_ue.py +++ b/app/scodoc/sco_edit_ue.py @@ -958,7 +958,10 @@ du programme" (menu "Semestre") si vous avez un semestre en cours); </div> """ ) - H.append("<p><ul>") + H.append( + """<div class="scobox formation-actions"> + <ul>""" + ) if has_perm_change: H.append( f""" @@ -971,7 +974,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours); """ ) - if not len(formsemestres): + if formsemestres: H.append( f""" <li><a class="stdlink" href="{ @@ -1019,38 +1022,46 @@ du programme" (menu "Semestre") si vous avez un semestre en cours); }">Liste détaillée des modules de la formation</a> (debug) </li> </ul> - </p>""" + </div> + """ ) - if has_perm_change: - H.append( + if has_perm_change or current_user.has_permission(Permission.EditFormSemestre): + H.append("""<div class="scobox">""") + if has_perm_change and len(formsemestres): + H.append( + """ + <div class="scobox-title"> + <a name="sems">Semestres ou sessions de cette formation</a> + </div> """ - <h3> <a name="sems">Semestres ou sessions de cette formation</a></h3> - <p><ul>""" - ) - for formsemestre in formsemestres: - H.append(f"""<li>{formsemestre.html_link_status()}""") - if not formsemestre.etat: - H.append(" [verrouillé]") - else: - H.append( - f""" <a class="stdlink" href="{url_for("notes.formsemestre_editwithmodules", - scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre.id - )}">Modifier</a>""" - ) - H.append("</li>") - H.append("</ul>") + ) - if current_user.has_permission(Permission.EditFormSemestre): - H.append( - f"""<ul> - <li><b><a class="stdlink" href="{ - url_for('notes.formsemestre_createwithmodules', scodoc_dept=g.scodoc_dept, - formation_id=formation_id, semestre_id=1) - }">Mettre en place un nouveau semestre de formation {formation.acronyme}</a></b> - </li> - </ul>""" - ) - # <li>(debug) <a class="stdlink" href="check_form_integrity?formation_id=%(formation_id)s">Vérifier cohérence</a></li> + H.append("<ul>") + for formsemestre in formsemestres: + H.append(f"""<li>{formsemestre.html_link_status()}""") + if not formsemestre.etat: + H.append(" [verrouillé]") + else: + H.append( + f""" <a class="stdlink" + href="{url_for("notes.formsemestre_editwithmodules", + scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre.id + )}">Modifier</a>""" + ) + H.append("</li>") + H.append("</ul>") + + if current_user.has_permission(Permission.EditFormSemestre): + H.append( + f"""<ul> + <li><b><a class="stdlink" href="{ + url_for('notes.formsemestre_createwithmodules', scodoc_dept=g.scodoc_dept, + formation_id=formation_id, semestre_id=1) + }">Mettre en place un nouveau semestre de formation {formation.acronyme}</a></b> + </li> + </ul>""" + ) + H.append("</div>") warn, _ = sco_formsemestre_validation.check_formation_ues(formation) H.append(warn) @@ -1128,7 +1139,9 @@ def _ue_table_ues( scodoc_dept=g.scodoc_dept, ue_id=ue["ue_id"], ) - ue["code_apogee_str"] = f""", Apo: <span + ue[ + "code_apogee_str" + ] = f""", Apo: <span class="{klass}" data-url="{edit_url}" id="{ue['ue_id']}" data-placeholder="{scu.APO_MISSING_CODE_STR}">{ ue["code_apogee"] or "" diff --git a/app/static/css/ue_table.css b/app/static/css/ue_table.css index 54679babef51b967e4e29723972e9db7f51db535..00dfa0f99b58da56a3a74b63bc3e256b61b86f4e 100644 --- a/app/static/css/ue_table.css +++ b/app/static/css/ue_table.css @@ -214,4 +214,8 @@ span.formation_module_ue { span.notes_module_list_buts { margin-right: 5px; +} + +div.formation-actions li { + margin-top: 12px; } \ No newline at end of file diff --git a/tools/debian/control b/tools/debian/control index b3e8cceecb9342654e066828eb33ac03c9c3ce84..81aa4a70a1ff3454519b64cfb26b8893f55c0ed5 100644 --- a/tools/debian/control +++ b/tools/debian/control @@ -4,5 +4,5 @@ Architecture: amd64 Maintainer: Emmanuel Viennet <emmanuel@viennet.net> Description: ScoDoc 9 Un logiciel pour le suivi de la scolarité universitaire. -Depends: adduser, curl, gcc, graphviz, graphviz-dev, libpq-dev, postfix|exim4, cracklib-runtime, libcrack2-dev, libpango-1.0-0, pango1.0-tools, python3-dev, python3-venv, python3-pip, python3-wheel, nginx, postgresql, libpq-dev, redis +Depends: adduser, curl, gcc, graphviz, graphviz-dev, postfix|exim4, cracklib-runtime, libcrack2-dev, libpango-1.0-0, pango1.0-tools, python3-dev, python3-venv, python3-pip, python3-wheel, nginx, postgresql, libpq-dev, redis Recommends: ufw