Commit 717568c6 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Merge branch 'release-1.2.1' into develop

parents 7fb3208d d27397e8
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
Journal des modifications
=========================

1.2.1 ()
------------------

### Ajout

- Nouvelle page consacrée au dépôt de fichiers divers liés à une thèse (précédemment dans la page "Thèse").
- Possibilité de déposer des fichiers dits "communs" utiles aux gestionnaires, ex: modèle d'avenant à la convention 
  de mise en ligne.

### Améliorations

- Améliorations de la page "Privilèges", notamment le filtrage par rôle. 
- Déplacement des privilèges de la catégorie `fichier-divers` vers la catégorie `these`
  car ils concernent des fichiers liés à une thèse (ex: PV de soutenance).
  La catégorie `fichier-divers` désigne désormais les privilèges concernant des fichiers sans lien aux
  thèses (ex: fichiers déposés pour les pages d'informations).
- Refonte technique de la gestion des fichiers liés aux pages d'informations, prélable au travail sur les droits de 
  dépôt de fichiers "divers" et "communs".


1.2.0 (10/07/2019)
------------------

+2 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@

use Application\Entity\Db\Fichier;
use Application\Entity\Db\NatureFichier;
use Application\Filter\NomFichierFormatter;
use Application\Filter\NomFichierTheseFormatter;
use Application\Service\Fichier\FichierService;
use Application\Service\FichierThese\FichierTheseService;
use Application\Service\File\FileService;
@@ -40,7 +40,7 @@ $qb
/** @var Fichier[] $fichiers */
$fichiers = $qb/*->setMaxResults(50)*/->getQuery()->getResult();

$nomFichierFormatter = new NomFichierFormatter();
$nomFichierFormatter = new NomFichierTheseFormatter();

$updatedFichiers = [];
foreach ($fichiers as $fichier) {
+3 −3
Original line number Diff line number Diff line
@@ -2,9 +2,9 @@
return [
    'unicaen-app' => [
        'app_infos' => [
            'version' => '1.2.0',
            'date' => '10/07/2019',
            'version' => '1.2.1',
            'date' => '11/07/2019',
        ],
    ],
    'comment' => 'Fichier généré le 10/07/2019 à 15:21:25 avec /home/gauthierb/workspace/sygal/bump-version',
    'comment' => 'Fichier généré le 11/07/2019 à 16:32:53 avec /home/gauthierb/workspace/sygal/bump-version',
];
+89 −0
Original line number Diff line number Diff line

--
-- Nouvelle NATURE_FICHIER : 'Fichier divers'
--
insert into NATURE_FICHIER (ID, CODE, LIBELLE) values (NATURE_FICHIER_ID_SEQ.nextval, 'DIVERS', 'Fichier divers')
/
update NATURE_FICHIER set LIBELLE = 'Fichier non PDF joint à une thèse (ex: vidéo)' where CODE = 'FICHIER_NON_PDF'
/


--
-- FICHIER : élargissement de la colonne UUID
--
alter table FICHIER modify UUID VARCHAR2(60)
/


--
-- INFORMATION_FICHIER => FICHIER
--
insert into FICHIER (ID,
                     UUID,
                     NOM,
                     NOM_ORIGINAL,
                     TYPE_MIME,
                     TAILLE,
                     DESCRIPTION,
                     NATURE_ID,
                     VERSION_FICHIER_ID,
                     HISTO_CREATION,
                     HISTO_CREATEUR_ID,
                     HISTO_MODIFICATION,
                     HISTO_MODIFICATEUR_ID)
select FICHIER_ID_SEQ.nextval,
       if.FILENAME as UUID,
       if.FILENAME as NOM,         -- TODO: normaliser ultérieurement pour garantir l'unicité
       if.NOM as NOM_ORIGINAL,
       'application/octet-stream', -- TODO: corriger ultérieurement
       0,                          -- TODO: corriger ultérieurement
       if.NOM as DESCRIPTION,
       nf.ID,
       vf.ID,
       if.CREATION,
       if.CREATEUR,
       if.CREATION,
       if.CREATEUR
from INFORMATION_FICHIER if
         join VERSION_FICHIER vf on vf.CODE = 'VO'
         join NATURE_FICHIER nf on nf.CODE = 'DIVERS'
/
alter table INFORMATION_FICHIER rename to INFORMATION_FICHIER_SAV
/


--
-- INFORMATION : correction des ID de fichiers dans les URL.
--
CREATE OR REPLACE Function new_contenu(information_id in number)
    RETURN clob
    is
    vcontenu clob;
    cursor cur is
        select inf.id as from_id, f.id as to_id
        from INFORMATION_FICHIER_SAV inf
                 join fichier f on f.UUID = inf.FILENAME;
begin
    select contenu into vcontenu from INFORMATION where id = information_id;
    FOR row in cur
        LOOP
            vcontenu := replace(vcontenu, '/fichiers/telecharger/'||row.from_id, '/fichiers/telecharger/'||row.to_id);
        END LOOP;
    return vcontenu;
end;
/
create table information_new as
    select id, contenu, new_contenu(id) new_contenu
    from INFORMATION
/
declare
    cursor cur is select * from information_new;
begin
    FOR r in cur
        LOOP
            update INFORMATION set contenu = r.new_contenu where id = r.id;
        END LOOP;
end;
/
drop table information_new
/
+60 −0
Original line number Diff line number Diff line
--
-- Déplacement des privilèges de la catégorie 'fichier-divers' vers la catégorie 'these'
-- car ils concernent des fichiers liés à une thèse (ex: PV de soutenance).
--
-- La catégorie 'fichier-divers' désigne désormais les privilèges concernant des fichiers non liés
-- aux thèses (ex: fichiers déposés pour les pages d'informations).
--
update PRIVILEGE p
    set CATEGORIE_ID = (select id from CATEGORIE_PRIVILEGE where CODE = 'these'),
        CODE = 'fichier-divers-'||CODE
    where CATEGORIE_ID = (select id from CATEGORIE_PRIVILEGE where CODE = 'fichier-divers')
/

--
-- 2 nouveaux privilèges pour les opérations sur des fichiers divers, *non liées aux thèses* :
--   - fichier-divers/televerser
--   - fichier-divers/telecharger
--
insert into PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
    select PRIVILEGE_ID_SEQ.nextval, cp.id, 'televerser', 'Téléverser ou supprimer un fichier divers, non lié à une thèse', 100
    from CATEGORIE_PRIVILEGE cp
    where cp.CODE = 'fichier-divers'
/
insert into PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
    select PRIVILEGE_ID_SEQ.nextval, cp.id, 'telecharger', 'Télécharger un fichier divers, non lié à une thèse', 200
    from CATEGORIE_PRIVILEGE cp
    where cp.CODE = 'fichier-divers'
/

--
-- Supression du privilège faq/modifier-fichier, utilisé pour les fichiers des pages d'informations.
-- Il est remplacé par le privilège fichier-divers/televerser.
--
delete from PRIVILEGE
    where CATEGORIE_ID = (select id from CATEGORIE_PRIVILEGE where CODE = 'faq')
      and CODE = 'modifier-fichier'
/
-- Ajout des privilèges fichier-divers/* au profil 'ADMIN_TECH'
insert into PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
    with data(categ, priv) as (
        select 'fichier-divers',  'televerser'  from dual union
        select 'fichier-divers',  'telecharger' from dual
    )
    select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
    from data
    join PROFIL on profil.ROLE_ID in (/*'ADMIN_TECH',*/ 'BU', 'BDD')
    join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
    join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
/
-- Attribution (si pas déjà fait) des privilèges fichier-divers/* au rôle 'ADMIN_TECH' (grâce au profil 'ADMIN_TECH').
insert into ROLE_PRIVILEGE (ROLE_ID, PRIVILEGE_ID)
    SELECT r.id as ROLE_ID, p.ID as PRIVILEGE_ID
    from PROFIL_PRIVILEGE pp
             join profil on PROFIL.ID = pp.PROFIL_ID and profil.ROLE_ID in (/*'ADMIN_TECH',*/ 'BU', 'BDD')
             join PRIVILEGE p on p.id = pp.PRIVILEGE_ID
             join CATEGORIE_PRIVILEGE cp on cp.id = p.CATEGORIE_ID and cp.CODE = 'fichier-divers'
             join role r on r.CODE = PROFIL.ROLE_ID
    where not exists (
        select * from ROLE_PRIVILEGE rp where rp.ROLE_ID = r.id and rp.PRIVILEGE_ID = p.id
    );
Loading