From ea7ef4f1a52d709851148cd5ecfa7d6e4351602b Mon Sep 17 00:00:00 2001
From: ilona <ilona@scodoc.org>
Date: Mon, 2 Sep 2024 07:34:04 +0200
Subject: [PATCH] =?UTF-8?q?Am=C3=A9liore=20l=C3=A8g=C3=A8rement=20pr=C3=A9?=
 =?UTF-8?q?sentation=20page=20edition=20formation.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitignore                  |  2 +-
 app/__init__.py             |  4 +-
 app/scodoc/sco_edit_ue.py   | 77 ++++++++++++++++++++++---------------
 app/static/css/ue_table.css |  4 ++
 tools/debian/control        |  2 +-
 5 files changed, 52 insertions(+), 37 deletions(-)

diff --git a/.gitignore b/.gitignore
index 22d1be8bc..ec245bea3 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 aab9ef3f5..b3944de7c 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 48e1c90ac..40989539e 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""" &nbsp;<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""" &nbsp;<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 54679babe..00dfa0f99 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 b3e8cceec..81aa4a70a 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
-- 
GitLab