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

Merge branch 'feature_deplacement_autoris_diplom' into test

parents 1802f8f9 d489e521
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
Journal des modifications
=========================

13.1.0
------
- Association d'individu à un membre de jury : si un acteur existe déjà avec le même individu et le même rôle pas besoin d'en créer un nouveau.
- [FIX] Plantage lors de la suppression d'un dossier d'admission : toutes les données liées n'étaient pas supprimées correctement au préalable.
- [FIX] Plantage lors de la suppression d'une association d'individu à un membre de jury en l'absence de directeur de thèse.
- [FIX] Formulaire d'association d'individu à un membre de jury : plantage dû à un bug dans la validation permettant d'enregistrer sans fournir l'établissement requis.

13.0.0
------
- Module Portfolio ; fiches RNCP ; import des publications HAL du doctorant (possibilité d'y associer des compétences RNCP).
+23 −14
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ return [
        'api_clients' => [
            'clients' => [
                // Nom unique du client => config
                'pegase_coc_ext_api_client' => [
                'pegase_coc_ext_api_client_UCN' => [
                    // Classe du client HTTP
                    'class' => RestClient::class,
                    // Options
@@ -74,10 +74,8 @@ return [
                        'timeout' => 10,
                        'debug' => true,
                        'debug_file' => '/tmp/debug_curl.log',

                        // Taille maxi du corps des messages d'erreurs reçus
                        'http_errors_truncate_at' => 1500,

                        // Middlewares Guzzle éventuels (https://docs.guzzlephp.org/en/stable/handlers-and-middleware.html)
                        'middlewares' => [
                            'jwt_middleware',
@@ -106,6 +104,28 @@ return [
        ],
    ],

    'unicaen_pegase' => [
        // correspondance 'Etablissement d'inscription SyGAL (etablissement.source_code)' => 'Code structure etablissement Pégase'
        'codes_structures_etablissements' => [
            'UCN' => 'ETAB00',
        ],
        // codes des types de résultats (cf. API Pégase "REF-Référentiel", /parametrage/TypeResultat) selon l'établissement d'inscription
        'codes_types_resultats' => [
            'UCN' => [
                // diplomation
                'ADMIS' => 'XXXXX', // admis
                'AJOURNE' => 'XXXXX', // abandon
                // réinscription
                'VALIDE' => 'XXXXX', // autorisé à continuer
                'NON_VALIDE' => 'XXXXX', // pas autorisé à continuer
            ],
        ],
        // noms des clients REST (configurés dans 'unicaen-api') à utiliser selon l'établissement d'inscription
        'api_clients' => [
            'UCN' => 'pegase_coc_ext_api_client_UCN', // API client configuré plus haut
        ],
    ],

    'caches' => [
        /**
         * Cache utilisé pour persister les tokens JWT et éviter ainsi qu'un nouveau token soit demandé avant chaque appel d'API.
@@ -118,17 +138,6 @@ return [
        ],
    ],

    'unicaen-pegase-coc-ext-api' => [
        // codes des types de résultats (cf. API Pégase "REF-Référentiel", /parametrage/TypeResultat)
        'codes_types_resultats' => [
            'ADMIS' => 'TRE001',
            'AJOURNE' => 'TRE002',
            'VALIDE' => 'TRE009',
            'NON_VALIDE' => 'TRE010',
            'CESURE' => 'TRE013',
        ],
    ],

    'fichier' => [
        'storage' => [
            'adapters' => [
+7 −5
Original line number Diff line number Diff line
@@ -124,16 +124,18 @@ class ActeurTheseRepository extends AbstractActeurRepository

        $directeur = $proposition->getObject()
            ->getActeursByRoleCode(Role::CODE_DIRECTEUR_THESE)
            ->first();
            ->first() ?? null;

        $coDirecteurs = $proposition->getObject()
            ->getActeursByRoleCode(Role::CODE_CODIRECTEUR_THESE);

        $acteursExclus = array_merge(
            $directeur ? [$directeur] : [],
            $coDirecteurs->toArray()
        );
        $individusExclus = array_map(
            fn($a) => $a->getIndividu(),
            array_merge([$directeur],
                $coDirecteurs->toArray()
            )
            $acteursExclus
        );

        return array_filter($qb->getQuery()->getResult(), fn($acteur) =>
+10 −5
Original line number Diff line number Diff line
@@ -166,7 +166,16 @@ abstract class AbstractActeurFieldset extends Fieldset implements InputFilterPro

    public function getInputFilterSpecification(): array
    {
        $spec = [
        $spec = $this->createInputFilterSpec();

        $this->acteurRule->setActeur($this->object);

        return $this->acteurRule->prepareActeurInputFilterSpecification($spec);
    }

    protected function createInputFilterSpec(): array
    {
        return [
            'role' => [
                'filters' => [
                    ['name' => ToNull::class],
@@ -202,9 +211,5 @@ abstract class AbstractActeurFieldset extends Fieldset implements InputFilterPro
                ],
            ],
        ];

        $this->acteurRule->setActeur($this->object);

        return $this->acteurRule->prepareActeurInputFilterSpecification($spec);
    }
}
 No newline at end of file
+13 −13
Original line number Diff line number Diff line
@@ -5,12 +5,12 @@ namespace Acteur\Fieldset\ActeurThese;
use Acteur\Fieldset\AbstractActeurFieldset;
use Acteur\Rule\ActeurThese\ActeurTheseRule;
use Laminas\Filter\ToNull;
use Laminas\Stdlib\ArrayUtils;
use UnicaenApp\Filter\SearchAndSelectFilter;
use UnicaenApp\Form\Element\SearchAndSelect;

/**
 * @property \Acteur\Entity\Db\ActeurThese $object
 * @property \Acteur\Rule\ActeurThese\ActeurTheseRule $acteurRule
 */
class ActeurTheseFieldset extends AbstractActeurFieldset
{
@@ -35,19 +35,19 @@ class ActeurTheseFieldset extends AbstractActeurFieldset
        $this->add($etablissementForce);
    }

    public function getInputFilterSpecification(): array
    protected function createInputFilterSpec(): array
    {
        $spec = [
        return ArrayUtils::merge(
            parent::createInputFilterSpec(),
            [
                'etablissementForce' => [
                    'filters' => [
                        ['name' => SearchAndSelectFilter::class],
                        ['name' => ToNull::class],
                    ],
            ]
        ];

        $this->acteurRule->setActeur($this->object);

        return $this->acteurRule->prepareActeurInputFilterSpecification($spec);
                ],
            ],
            true
        );
    }
}
 No newline at end of file
Loading