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

[FIX] Correction de scripts SQL

parent 8ecd7fb9
Loading
Loading
Loading
Loading
+161 −0
Original line number Diff line number Diff line

-----------------------------------------------------------------------------------------------------------------
--                                             UnicaenAvis
-----------------------------------------------------------------------------------------------------------------


drop table if exists unicaen_avis_complem cascade ;
drop table if exists unicaen_avis cascade ;
drop table if exists unicaen_avis_type_valeur_complem cascade ;
drop table if exists unicaen_avis_type_valeur cascade ;
drop table if exists unicaen_avis_valeur cascade ;
drop table if exists unicaen_avis_type cascade ;
drop sequence if exists unicaen_avis_type_id_seq ;
drop sequence if exists unicaen_avis_valeur_id_seq ;
drop sequence if exists unicaen_avis_type_valeur_id_seq ;
drop sequence if exists unicaen_avis_type_valeur_complem_id_seq ;
drop sequence if exists unicaen_avis_id_seq ;
drop sequence if exists unicaen_avis_complem_id_seq ;


--
-- Types d'avis
--
create sequence unicaen_avis_type_id_seq ;

create table unicaen_avis_type
(
    id bigint not null constraint unicaen_avis_type__pkey primary key default nextval('unicaen_avis_type_id_seq'),
    code varchar(64) not null,
    libelle varchar(128) not null,
    description varchar(128),
    ordre smallint default 0 not null
);

create index unicaen_avis_type__idx on unicaen_avis_type (id);
create unique index unicaen_avis_type__un on unicaen_avis_type (code);

comment on table unicaen_avis_type is 'Types d''avis existants';
comment on column unicaen_avis_type.code is 'Code littéral unique de ce type d''avis';
comment on column unicaen_avis_type.libelle is 'Libellé de ce type d''avis';
comment on column unicaen_avis_type.description is 'Description éventuelle de ce type d''avis';
comment on column unicaen_avis_type.ordre is 'Entier permettant d''ordonner les types d''avis';

--
-- Valeurs d'avis possibles.
--
create sequence unicaen_avis_valeur_id_seq ;

create table unicaen_avis_valeur
(
    id bigint not null constraint unicaen_avis_valeur__pk primary key default nextval('unicaen_avis_valeur_id_seq'),
    code varchar(64) not null,
    valeur varchar(128) not null,
    valeur_bool boolean,
    tags varchar(64),
    ordre serial not null,
    description varchar(128)
);

create index unicaen_avis_valeur__idx on unicaen_avis_valeur (id);
create unique index unicaen_avis_valeur__un on unicaen_avis_valeur (code);

comment on table unicaen_avis_valeur is 'Valeurs d''avis possibles';
comment on column unicaen_avis_valeur.code is 'Code littéral unique de cette valeur';
comment on column unicaen_avis_valeur.valeur is 'Valeur (ex : Favorable, Défavorable, etc.)';
comment on column unicaen_avis_valeur.valeur_bool is 'Éventuelle valeur booléenne équivalente';
comment on column unicaen_avis_valeur.tags is 'Éventuels tags associés à cette valeur (ex : classe CSS "success")';
comment on column unicaen_avis_valeur.ordre is 'Entier permettant d''ordonner les valeurs';
comment on column unicaen_avis_valeur.description is 'Description éventuelle de cette valeur';

--
-- Valeurs d'avis autorisées par type d'avis.
--
create sequence unicaen_avis_type_valeur_id_seq ;

create table unicaen_avis_type_valeur
(
    id bigint not null constraint unicaen_avis_type_valeur__pk primary key default nextval('unicaen_avis_type_valeur_id_seq'),
    avis_type_id bigint not null constraint unicaen_avis_type_valeur__unicaen_avis_type__fk references unicaen_avis_type,
    avis_valeur_id bigint not null constraint unicaen_avis_type_valeur__unicaen_avis_valeur__fk references unicaen_avis_valeur
);

create index unicaen_avis_type_valeur__idx on unicaen_avis_type_valeur (id);
create index unicaen_avis_type_valeur__unicaen_avis_type__idx on unicaen_avis_type_valeur (avis_type_id);
create index unicaen_avis_type_valeur__unicaen_avis_valeur__idx on unicaen_avis_type_valeur (avis_valeur_id);

comment on table unicaen_avis_type_valeur is 'Valeurs d''avis autorisées par type d''avis';
comment on column unicaen_avis_type_valeur.avis_type_id is 'Identifiant du type d''avis concerné';
comment on column unicaen_avis_type_valeur.avis_valeur_id is 'Identifiant de la valeur d''avis autorisée';

--
-- Compléments possibles selon le type d'avis et la valeur de l'avis.
--
create sequence unicaen_avis_type_valeur_complem_id_seq ;

create table unicaen_avis_type_valeur_complem
(
    id bigint not null constraint unicaen_avis_type_valeur_complem__pk primary key default nextval('unicaen_avis_type_valeur_complem_id_seq'),
    avis_type_valeur_id bigint not null constraint unicaen_avis_type_valeur_complem__unicaen_avis_type_valeur__fk references unicaen_avis_type_valeur,
    parent_id bigint constraint unicaen_avis_type_valeur_complem__parent__fk references unicaen_avis_type_valeur_complem,
    code varchar(128) not null,
    libelle varchar(128) not null,
    type varchar(64) not null,
    ordre serial not null,
    obligatoire boolean not null default false,
    obligatoire_un_au_moins boolean not null default false
);

create index unicaen_avis_type_valeur_complem__idx on unicaen_avis_type_valeur_complem (id);
create index unicaen_avis_type_valeur_complem__unicaen_avis_type_valeur__idx on unicaen_avis_type_valeur (id);
create unique index unicaen_avis_type_valeur_complem__un on unicaen_avis_type_valeur_complem (code);

comment on table unicaen_avis_type_valeur_complem is 'Compléments possibles selon le type d''avis et la valeur de l''avis';
comment on column unicaen_avis_type_valeur_complem.avis_type_valeur_id is 'Identifiant du type+valeur d''avis permettant ce complément';
comment on column unicaen_avis_type_valeur_complem.parent_id is 'Identifiant du complément parent éventuel de type checkbox uniquement (pour affichage et required conditionnel)';
comment on column unicaen_avis_valeur.code is 'Code littéral unique de ce complément';
comment on column unicaen_avis_type_valeur_complem.libelle is 'Libellé du complément';
comment on column unicaen_avis_type_valeur_complem.type is 'Type de valeur attendue pour ce complément (textarea, checkbox, checkbox+textarea, select, etc.)';
comment on column unicaen_avis_type_valeur_complem.obligatoire is 'Témoin indiquant si une valeur est requise pour ce complément';
comment on column unicaen_avis_type_valeur_complem.obligatoire_un_au_moins is 'Témoin indiquant si une valeur est requise pour l''un au moins des compléments ayant ce même témoin à `true`';

--
-- Avis
--
create sequence unicaen_avis_id_seq ;

create table unicaen_avis
(
    id bigint not null constraint unicaen_avis__pkey primary key default nextval('unicaen_avis_id_seq'),
    avis_type_id bigint not null constraint unicaen_avis__unicaen_avis_type__fk references unicaen_avis_type,
    avis_valeur_id bigint not null constraint unicaen_avis__unicaen_avis_valeur__fk references unicaen_avis_valeur
);

create index unicaen_avis__idx on unicaen_avis (id);
create index unicaen_avis__unicaen_avis_type__idx on unicaen_avis (avis_type_id);
create index unicaen_avis__unicaen_avis_valeur__idx on unicaen_avis (avis_valeur_id);

comment on table unicaen_avis is 'Avis';
comment on column unicaen_avis.avis_type_id is 'Identifiant du type de cet avis';
comment on column unicaen_avis.avis_valeur_id is 'Identifiant de la valeur de cet vis';

--
-- Compléments apportés aux avis
--
create sequence unicaen_avis_complem_id_seq ;

create table unicaen_avis_complem
(
    id bigint not null constraint unicaen_avis_complem__pk primary key default nextval('unicaen_avis_complem_id_seq'),
    avis_id bigint not null constraint unicaen_avis_complem__unicaen_avis__fk references unicaen_avis,
    avis_type_complem_id bigint not null constraint unicaen_avis_complem__unicaen_avis_type_valeur_complem__fk references unicaen_avis_type_valeur_complem,
    valeur text
);

create index unicaen_avis_complem__idx on unicaen_avis_complem (id);
create index unicaen_avis_complem__unicaen_avis_type_valeur_complem__idx on unicaen_avis_complem (avis_type_complem_id);

comment on table unicaen_avis_complem is 'Compléments apportés aux avis';
comment on column unicaen_avis_complem.avis_id is 'Identifiant de l''avis concerné';
comment on column unicaen_avis_complem.avis_type_complem_id is 'Identifiant du complement attendu';
comment on column unicaen_avis_complem.valeur is 'Valeur du complement apportée';
+71 −0
Original line number Diff line number Diff line
--
-- Table des logs
--
create table step_star_log
(
    id bigserial constraint stepstar_log_pk primary key,
    these_id bigint constraint stepstar_log_these_id_fk references these on delete cascade,
    started_on timestamp not null,
    ended_on timestamp not null,
    success boolean not null,
    operation varchar(64) not null,
    log text not null,
    command varchar(256) not null,
    tef_file_content_hash varchar(64),
    tef_file_content text,
    has_problems boolean default false not null,
    tag varchar(64)
);
-- NB : `step_star_log_id_seq` créée automatiquement.

--
-- Nouvelle catégorie.
--
insert into CATEGORIE_PRIVILEGE(ID, CODE, LIBELLE, ORDRE)
select nextval('categorie_privilege_id_seq'), 'step-star', 'STEP-STAR', 20;

--
-- Nouveaux privilèges.
--
insert into PRIVILEGE(ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
with d(ordre, code, lib) as (
    select 10, 'log-lister', 'Lister les logs' union all
    select 20, 'log-consulter', 'Consulter les détails d''un log' union all
    select 30, 'tef-telecharger', 'Télécharger le fichier TEF envoyé'
)
select nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre
from d join CATEGORIE_PRIVILEGE cp on cp.CODE = 'step-star'
;

--
-- Accord de privilèges à des profils.
--
INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'step-star', 'log-lister' union all
    select 'step-star', 'log-consulter' union all
    select 'step-star', 'tef-telecharger'
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH', 'BU')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists(
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    );

--
-- Attribution automatique des privilèges aux rôles, d'après ce qui est spécifié dans :
--   - PROFIL_TO_ROLE (profils appliqués à chaque rôle) et
--   - PROFIL_PRIVILEGE (privilèges accordés à chaque profil).
--
insert into ROLE_PRIVILEGE (ROLE_ID, PRIVILEGE_ID)
select p2r.ROLE_ID, pp.PRIVILEGE_ID
from PROFIL_TO_ROLE p2r
         join profil pr on pr.id = p2r.PROFIL_ID
         join PROFIL_PRIVILEGE pp on pp.PROFIL_ID = pr.id
where not exists (
        select * from role_privilege where role_id = p2r.role_id and privilege_id = pp.privilege_id
    )
;
+3 −1
Original line number Diff line number Diff line
@@ -15,4 +15,6 @@ git fetch --tags && git checkout --force 4.1.0 && bash ./install.sh

## 2. Dans la base de données

Cf. script [4.1.0/rapports_activite.sql](4.1.0/rapports_activite.sql).
- Lancez dans l'ordre les scripts SQL situés dans le répertoire [4.1.0](4.1.0) :
  - [avis_schema.sql](4.1.0/avis_schema.sql)
  - [rapports_activite.sql](4.1.0/rapports_activite.sql)
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ histo_createur_id bigint not null constraint membre_createur_fk ref
histo_modification    timestamp not null,
histo_modificateur_id bigint not null          constraint membre_modificateur_fk references utilisateur,
histo_destruction     timestamp,
histo_destructeur_id  bigint                   constraint membre_destructeur_fk references utilisateur,
histo_destructeur_id  bigint                   constraint membre_destructeur_fk references utilisateur
);

-- insertions liées à l'engagement d'impartialité comme un template
+5 −2
Original line number Diff line number Diff line
@@ -15,6 +15,11 @@ git fetch --tags && git checkout --force 5.2.7 && bash ./install.sh

## 2. Dans la base de données

- Lancez le script SQL situé dans le répertoire [5.2.7](5.2.7) : 
  - [step_star_schema.sql](5.2.7/step_star_schema.sql)

- Puis exécutez ceci :

```sql
alter table formation_session add date_fermeture_inscription timestamp;

@@ -35,8 +40,6 @@ comment on column mail_confirmation.refus_liste_diff is 'Refus de recevoir les m
comment on table doctorant_compl is 'Table obsolète conservée un temps';
alter table doctorant_compl rename to z_doctorant_compl;

alter table step_star_log add tag varchar(64);

-- ajout pour le serment du docteur
INSERT INTO unicaen_renderer_macro (code, description, variable_name, methode_name) VALUES ('These#Discipline', '<p>Affiche le libellé de la discipline associée à la thèse</p>', 'these', 'getLibelleDiscipline');
INSERT INTO unicaen_renderer_template (code, description, document_type, document_sujet, document_corps, document_css) VALUES ('SERMENT_DU_DOCTEUR', '<p>Texte du serment du doctorant</p>', 'pdf', 'serment_du_docteur.pdf', '<h1>Serment du docteur</h1>
Loading