Commit a21e056f authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Merge branch 'feature_cotutelle' into test

parents 02a17c24 ad0f1100
Loading
Loading
Loading
Loading
+40 −0
Changes for CHANGELOG.md: 40 added lines, 0 removed lines.
Original line number Diff line number Diff line
Journal des modifications
=========================

14.0.0
------
- Nouveau module de gestion des cotutelles de thèse.

13.7.0
------
- Admission : ajout de l'année universitaire précédente dans la liste des années proposées dans l'onglet Inscription.
- Soutenance Thèse/HDR : déplacement de la désignation du président du jury juste avant la délibération finale.
- Soutenance HDR : renommage de 'Examinateur' en 'Garant - Membre du jury' dans les PDF générés. 
- Soutenance Thèse/HDR : le bouton d'ajout/modification du lieu de soutenance reste désormais visible même si la soutenance est validée.
- Réception des inscriptions Pégase : début d'intégration de la nouvelle version du connecteur Doctorant Pégase (1.2.0).
- [FIX] Réception des inscriptions Pégase : la présence de 'noCandidat' dans les specs OpenAPI provoquait une erreur 'Value cannot be null'.

13.6.0
------
- Inscriptions administratives importées : pas de plantage mais avertissement si plusieurs dossiers d'admission sont trouvés.
- Inscriptions administratives importées : pas de création du doctorant si la création de la thèse est impossible.
- Inscriptions administratives importées : pas de création systématique d'un individu (doctorant) mais utilisation de l'individu du dossier d'admission.
- Saise d'une thèse : recherche/utilisation d'un éventuel doctorant existant en cas de création ; impossible de changer le doctorant d'une thèse existante ; meilleure remontée/affichage d'erreur.
- Admission : ajout du bouton de suppression d'un dossier d'admission dans le formulaire de modification.
- Admission : utilisation d'une transaction globale pour la suppression d'un dossier d'admission.
- Affichage des acteurs de thèse/HDR : utilisation du libellé de rôle sans mention du code structure (ex: 'Codirecteur de thèse' plutôt que 'Codirecteur de thèse UCN').
- [FIX] Ligne de commande de test d'archivabilité du manuscrit de thèse PDF : amélioration du message en cas d'erreur.
- [FIX] Inscriptions administratives importées : refetch de l'IA pour être sûr d'avoir les jointures correctes.
- [FIX] Ligne de commande de retraitement du manuscrit de thèse PDF : correction d'un appel de méthode erroné.
- [FIX] FichierViewHelper : mutliplication des liens de téléchargement en cas d'appels multiples sur une même page.  

13.5.0
------
- Formations : petites améliorations concernant les enquêtes.
- Inscriptions administratives importées : ajout d'un error_log en cas d'échec du traitement de l'inscription.
- [FIX] Formations suivies : les inscriptions sans réponse à l'enquête étaient écartées à tort.
- [FIX] Formations suivies : rétablissement de l'accès au dépôt de justificatif d'absence.
- [FIX] Inscriptions administratives importées : les liens historisés avec un doctorant n'étaient pas écartés.

13.4.0
------
- Possibilité de créer une thèse à partir d'un dossier d'admission validé (depuis la page de recherche de dossiers).
@@ -10,6 +45,11 @@ Journal des modifications
- FichierViewHelper : refactorisation pour ajouter des setters ; ajout de règles dans app.scss pour abandon de classes bootstrap ; plus de sobriété dans les styles.
- FichierViewHelper : plus qu'un seul argument dans __invoke() donc utilisation des setters ; cosmétique pour le nom du fichier.
- Traitement d'une inscription administrative reçue : précision lorsque le dossier d'admission trouvé est lié à un doctorant.
- Doctorant : nouvelle page 'consulter' ; remplacement de liens 'tableau-de-bord' par 'consulter'.
- Formation : lieu de formation (séance) visible de tous ; lien/mdp visio visible uniquement des inscrits sur liste principale.
- Doctorant : renommage adresse de contact en adresse perso ; nouvelle colonne dans individu ; ACL pour demandes de changement d'adresse mail perso.
- [FIX] Doctorant : correction de DoctorantAssertion qui interdisait l'accès au rôle Admin tech notamment.  
- [FIX] Plantage des notifications à propos des résultats de thèse passant à Admis (iterator vide à cause d'un critère de filtrage erroné).
- [FIX] TheseEtatRule : suppression d'une vérif empêchant la validation de la thèse corrigée par le président du jury (Transition d'état impossible : S → E).
- [FIX] Ajout du critère de la Source dans la recherche d'origine de financement par code.
- [BDD] Vue src_these : ajout de la jointure avec la table pays pour tenter d'alimenter la colonne pays_cotut_id.
+8 −7
Changes for composer.json: 8 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@
        "unicaen/api": "dev-master",
        "unicaen/app": "^6.4",
        "unicaen/auth-token": "^7.1",
        "unicaen/authentification": "dev-release_6.5.0 as 6.4.8",
        "unicaen/authentification": "^6.5",
        "unicaen/privilege": "^6.4",
        "unicaen/console": "^6.0",
        "unicaen/db-anonym": "^4.0",
@@ -83,7 +83,7 @@
        "unicaen/renderer": "^7.2",
        "unicaen/search": "^1.1",
        "unicaen/sql": "^2.0",
        "unicaen/sygal-api": "dev-master",
        "unicaen/sygal-api": "dev-feature_uuid_apprenant",
        "unicaen/utilisateur": "^6.3",
        "unicaen/avis": "^1.1"
    },
@@ -91,25 +91,26 @@
    "prefer-stable": true,
    "autoload": {
        "psr-0": {
            "Feature\\": "module/Feature/src",
            "Acteur\\": "module/Acteur/src",
            "Admission\\": "module/Admission/src",
            "Application\\": "module/Application/src",
            "AutorisationDiplomationThese\\": "module/AutorisationDiplomationThese/src",
            "AutorisationInscriptionThese\\": "module/AutorisationInscriptionThese/src",
            "Candidat\\": "module/Candidat/src",
            "ComiteSuiviIndividuel\\": "module/ComiteSuiviIndividuel/src",
            "Depot\\": "module/Depot/src",
            "Doctorant\\": "module/Doctorant/src",
            "Feature\\": "module/Feature/src",
            "Fichier\\": "module/Fichier/src",
            "Formation\\": "module/Formation/src",
            "HDR\\": "module/HDR/src",
            "Candidat\\": "module/Candidat/src",
            "AutorisationInscriptionThese\\": "module/AutorisationInscriptionThese/src",
            "AutorisationDiplomationThese\\": "module/AutorisationDiplomationThese/src",
            "Import\\": "module/Import/src",
            "Indicateur\\": "module/Indicateur/src",
            "Individu\\": "module/Individu/src",
            "Information\\": "module/Information/src",
            "InscriptionAdministrative\\": "module/InscriptionAdministrative/src",
            "Notification\\": "module/Notification/src",
            "Operation\\": "module/Operation/src",
            "RapportActivite\\": "module/RapportActivite/src",
            "Retraitement\\": "module/Retraitement/src",
            "Rule\\": "module/Rule/src",
@@ -134,7 +135,7 @@
            "DepotUnitTest\\": "module/Depot/tests/DepotUnitTest",
            "ImportTest\\": "module/Import/tests",
            "RetraitementTest\\": "module/Retraitement/test/RetraitementTest",
            "SygalApiImplTest\\": "module/SygalApiImpl/tests/SygalApiImplTest",
            "SygalApiImplTest\\": "module/SygalApiImpl/tests",
            "InscriptionAdministrativeTest\\": "module/InscriptionAdministrative/tests/InscriptionAdministrativeTest",
            "FeatureTest\\": "module/Feature/tests/FeatureTest"
        }
+16 −17
Changes for composer.lock: 16 added lines, 17 removed lines.
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
        "This file is @generated automatically"
    ],
    "content-hash": "9a6d154aa66b40301ad540cbee1ee7ba",
    "content-hash": "f1bbbde786189a5ec236c509436c1fe2",
    "packages": [
        {
            "name": "apereo/phpcas",
@@ -12543,11 +12543,11 @@
        },
        {
            "name": "unicaen/authentification",
            "version": "dev-release_6.5.0",
            "version": "6.5.0",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/authentification.git",
                "reference": "901dc97991813f09ffbf8902e42a70fc6e825359"
                "reference": "2523a5840c5a6c09efc744483766642948668633"
            },
            "require": {
                "apereo/phpcas": "1.6.*",
@@ -12570,7 +12570,7 @@
                ]
            },
            "description": "Module d'authentification pour les applications Unicaen - Version Laminas",
            "time": "2026-06-01T15:52:15+00:00"
            "time": "2026-09-21T13:21:59+00:00"
        },
        {
            "name": "unicaen/avis",
@@ -13340,11 +13340,11 @@
        },
        {
            "name": "unicaen/sygal-api",
            "version": "dev-master",
            "version": "dev-feature_uuid_apprenant",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/sygal-api.git",
                "reference": "92bedae6f8949bdf8b782ff61599c95c391abe95"
                "reference": "c0c42df69d8dd89429822cc6fb3166046489504b"
            },
            "require": {
                "guzzlehttp/guzzle": "^7.0",
@@ -13359,7 +13359,6 @@
            "require-dev": {
                "phpunit/phpunit": "^8.0"
            },
            "default-branch": true,
            "type": "module",
            "autoload": {
                "psr-4": {
@@ -13369,8 +13368,16 @@
                    "./Module.php"
                ]
            },
            "scripts": {
                "post-install-cmd": [
                    "mkdir -p public/unicaen && cp -r vendor/unicaen/sygal-api/asset/public/unicaen public/"
                ],
                "post-update-cmd": [
                    "mkdir -p public/unicaen && cp -r vendor/unicaen/sygal-api/asset/public/unicaen public/"
                ]
            },
            "description": "API SyGAL",
            "time": "2026-08-27T12:52:37+00:00"
            "time": "2026-10-16T13:07:28+00:00"
        },
        {
            "name": "unicaen/utilisateur",
@@ -16353,19 +16360,11 @@
            "time": "2025-03-24T14:11:06+00:00"
        }
    ],
    "aliases": [
        {
            "package": "unicaen/authentification",
            "version": "dev-release_6.5.0",
            "alias": "6.4.8",
            "alias_normalized": "6.4.8.0"
        }
    ],
    "aliases": [],
    "minimum-stability": "dev",
    "stability-flags": {
        "eljam/guzzle-jwt-middleware": 20,
        "unicaen/api": 20,
        "unicaen/authentification": 20,
        "unicaen/pegase-coc-ext-api": 20,
        "unicaen/pegase-odf-ext-api": 20,
        "unicaen/sygal-api": 20
+28 −0
Changes for doc/release-notes/v13/13.3.0/02_divers.sql: 28 added lines, 0 removed lines.
Original line number Diff line number Diff line
--
-- 1. Générer les requêtes :
--

select 'update admission_financement set financement_id = '||of2.id||' where id = '||f.id||'; -- anc '||f.financement_id/*,
       f.id,
       of.id, of.source_id, of.code, of.libelle_long,
       of2.id, of2.code, of2.libelle_long*/
from admission_financement f
         join origine_financement of on f.financement_id = of.id
         join origine_financement of2 on of2.code = of.code and of2.source_id = 1
where of.id <> of2.id;
;

select 'update financement set origine_financement_id = '||of2.id||' where id = '||f.id||'; -- anc '||f.origine_financement_id/*,
       f.id,
       of.id, of.source_id, of.code, of.libelle_long,
       of2.id, of2.code, of2.libelle_long*/
from financement f
         join these t on f.these_id = t.id
         join origine_financement of on f.origine_financement_id = of.id
         join origine_financement of2 on of2.code = of.code and of2.source_id = 1
where t.source_id = 1 and
    of.id <> of2.id;

--
-- 2. Lancer les requêtes générées.
--
 No newline at end of file
+26 −3
Changes for doc/release-notes/v13/13.4.0/03_these.sql: 26 added lines, 3 removed lines.
Original line number Diff line number Diff line
--
-- Ajout jointure pour alimenter 'pays_cotut_id'.
-- Création d'une vue et ajout jointure pour alimenter 'pays_cotut_id'.
--

create or replace view v_pays_tr as
select 'AZERBAIDJAN' lib_pays_cotut,          'AZERBAÏDJAN' lib_pays_iso union
select 'ITALIE' lib_pays_cotut,               'ITALIE' lib_pays_iso union
select 'ALGERIE' lib_pays_cotut,              'ALGÉRIE' lib_pays_iso union
select 'REPUBLIQUE TCHEQUE' lib_pays_cotut,   'TCHÉQUIE' lib_pays_iso union
select 'SAINT MARIN' lib_pays_cotut,          'SAINT-MARIN' lib_pays_iso union
select 'CANADA' lib_pays_cotut,               'CANADA' lib_pays_iso union
select 'ETATS UNIS' lib_pays_cotut,           'ÉTATS-UNIS' lib_pays_iso union
select 'PAYS BAS' lib_pays_cotut,             'PAYS-BAS' lib_pays_iso union
select 'BENIN' lib_pays_cotut,                'BÉNIN' lib_pays_iso union
select 'MAROC' lib_pays_cotut,                'MAROC' lib_pays_iso union
select 'CHINE POPULAIRE' lib_pays_cotut,      'CHINE' lib_pays_iso union
select 'PAYS-BAS' lib_pays_cotut,             'PAYS-BAS' lib_pays_iso union
select 'RUSSIE' lib_pays_cotut,               'RUSSIE, FÉDÉRATION DE' lib_pays_iso union
select 'VENEZUELA' lib_pays_cotut,            'VENEZUELA, RÉPUBLIQUE BOLIVARIENNE DU' lib_pays_iso union
select 'COTE D IVOIRE' lib_pays_cotut,        'CÔTE D''IVOIRE' lib_pays_iso union
select 'ROYAUME UNI' lib_pays_cotut,          'ROYAUME-UNI' lib_pays_iso union
select 'TUNISIE' lib_pays_cotut,              'TUNISIE' lib_pays_iso
;

drop view v_diff_these ;
drop view src_these;
create or replace view src_these
@@ -29,7 +50,7 @@ WITH pre AS (WITH version_corrigee_deposee AS (SELECT t.source_code,
                    ed.id                          AS ecole_doct_id,
                    ur.id                          AS unite_rech_id,
                    disc.id                        AS discipline_sise_id,
                    p.id                           as pays_cotut_id,
                    coalesce(p.id, p2.id)          AS pays_cotut_id,
                    tmp.lib_ths                    AS titre,
                    tmp.eta_ths                    AS etat_these,
                    tmp.cod_neg_tre::numeric       AS resultat,
@@ -55,7 +76,9 @@ WITH pre AS (WITH version_corrigee_deposee AS (SELECT t.source_code,
                      LEFT JOIN ecole_doct ed ON ed.source_code::text = tmp.ecole_doct_id::text
                      LEFT JOIN unite_rech ur ON ur.source_code::text = tmp.unite_rech_id::text
                      LEFT JOIN version_corrigee_deposee vcd ON vcd.source_code::text = tmp.source_code::text
                      left join pays p on unaccent(tmp.lib_pays_cotut) ilike '%' || unaccent(p.libelle_iso) || '%')
                      left join pays p on unaccent(tmp.lib_pays_cotut) ilike '%' || unaccent(p.libelle_iso) || '%'
                      LEFT JOIN v_pays_tr vp ON tmp.lib_pays_cotut::text = vp.lib_pays_cotut::text
                      LEFT JOIN pays p2 ON vp.lib_pays_iso::text = p2.libelle_iso::text)
SELECT pre.id,
       pre.source_code,
       pre.source_id,
Loading