Skip to content

Commit

Permalink
Add region parameters for taxref import migrate
Browse files Browse the repository at this point in the history
  • Loading branch information
amandine-sahl committed Aug 7, 2024
1 parent 03705c1 commit c82a1e5
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 13 deletions.
5 changes: 3 additions & 2 deletions apptax/taxonomie/commands/migrate_taxref/commands_v17.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,12 @@ def test_changes_detection(keep_cdnom):
@click.option("--keep-oldtaxref", is_flag=True)
@click.option("--keep-oldbdc", is_flag=True)
@click.option("--keep-cdnom", is_flag=True)
@click.option("--region", type=str)
@click.option("--script_predetection", type=click.Path(exists=True))
@click.option("--script_postdetection", type=click.Path(exists=True))
@with_appcontext
def apply_changes(
keep_oldtaxref, keep_oldbdc, keep_cdnom, script_predetection, script_postdetection
keep_oldtaxref, keep_oldbdc, keep_cdnom, region, script_predetection, script_postdetection
):
"""Procédure de migration de taxref vers la version 17
Application des changements import des données dans les tables taxref et bdc_status
Expand Down Expand Up @@ -114,7 +115,7 @@ def apply_changes(
"3.2_alter_taxref_data.sql",
)
)
db.session.execute(query, {"keep_cd_nom": keep_cdnom})
db.session.execute(query, {"keep_cd_nom": keep_cdnom, "region": region})
db.session.commit()
logger.info("it's done")
except Exception as e:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,9 @@ ALTER TABLE taxonomie.cor_nom_liste DROP CONSTRAINT cor_nom_listes_taxref_fkey;
------------------------------------------------
------------------------------------------------

-- CORRECTION
UPDATE taxonomie.import_taxref SET fr = NULL WHERE fr='';

-- UPDATE EXISTING CD_NOM
UPDATE taxonomie.taxref t
SET id_statut = fr, id_habitat = it.habitat::int, id_rang = it.rang, regne = it.regne, phylum = it.phylum,
SET id_habitat = it.habitat::int, id_rang = it.rang, regne = it.regne, phylum = it.phylum,
classe = it.classe, ordre = it.ordre, famille = it.famille, cd_taxsup = it.cd_taxsup,
cd_sup = it.cd_sup, cd_ref = it.cd_ref,
lb_nom = it.lb_nom, lb_auteur = it.lb_auteur, nom_complet = it.nom_complet,
Expand All @@ -38,11 +35,11 @@ WHERE it.cd_nom = t.cd_nom;

-- ADD NEW CD_NOM
INSERT INTO taxonomie.taxref(
cd_nom, id_statut, id_habitat, id_rang, regne, phylum, classe,
cd_nom, id_habitat, id_rang, regne, phylum, classe,
ordre, famille, cd_taxsup, cd_sup, cd_ref, lb_nom, lb_auteur,
nom_complet, nom_complet_html, nom_valide, nom_vern, nom_vern_eng,
group1_inpn, group2_inpn, sous_famille, tribu, url, group3_inpn)
SELECT it.cd_nom, it.fr, it.habitat::int, it.rang, it.regne, it.phylum, it.classe,
SELECT it.cd_nom,it.habitat::int, it.rang, it.regne, it.phylum, it.classe,
it.ordre, it.famille, it.cd_taxsup, it.cd_sup, it.cd_ref, it.lb_nom, it.lb_auteur,
it.nom_complet, it.nom_complet_html, it.nom_valide, it.nom_vern, it.nom_vern_eng,
it.group1_inpn, it.group2_inpn, it.sous_famille, it.tribu, it.url, it.group3_inpn
Expand All @@ -51,6 +48,29 @@ LEFT OUTER JOIN taxonomie.taxref t
ON it.cd_nom = t.cd_nom
WHERE t.cd_nom IS NULL;

-- Regional Status

DO $$ BEGIN
IF :region = 'gf' THEN UPDATE taxonomie.import_taxref SET gf = NULL Where gf=''; UPDATE taxonomie.taxref t SET id_statut = it.gf FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'mar' THEN UPDATE taxonomie.import_taxref SET mar = NULL Where mar=''; UPDATE taxonomie.taxref t SET id_statut = it.mar FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'gua' THEN UPDATE taxonomie.import_taxref SET gua = NULL Where gua=''; UPDATE taxonomie.taxref t SET id_statut = it.gua FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'sm' THEN UPDATE taxonomie.import_taxref SET sm = NULL Where sm=''; UPDATE taxonomie.taxref t SET id_statut = it.sm FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'sb' THEN UPDATE taxonomie.import_taxref SET sb = NULL Where sb=''; UPDATE taxonomie.taxref t SET id_statut = it.sb FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'spm' THEN UPDATE taxonomie.import_taxref SET spm = NULL Where spm=''; UPDATE taxonomie.taxref t SET id_statut = it.spm FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'may' THEN UPDATE taxonomie.import_taxref SET may = NULL Where may=''; UPDATE taxonomie.taxref t SET id_statut = it.may FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'epa' THEN UPDATE taxonomie.import_taxref SET epa = NULL Where epa=''; UPDATE taxonomie.taxref t SET id_statut = it.epa FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'reu' THEN UPDATE taxonomie.import_taxref SET reu = NULL Where reu=''; UPDATE taxonomie.taxref t SET id_statut = it.reu FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'sa' THEN UPDATE taxonomie.import_taxref SET sa = NULL Where sa=''; UPDATE taxonomie.taxref t SET id_statut = it.sa FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'ta' THEN UPDATE taxonomie.import_taxref SET ta = NULL Where ta=''; UPDATE taxonomie.taxref t SET id_statut = it.ta FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'taaf' THEN UPDATE taxonomie.import_taxref SET taaf = NULL Where taaf=''; UPDATE taxonomie.taxref t SET id_statut = it.taaf FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'pf' THEN UPDATE taxonomie.import_taxref SET pf = NULL Where pf=''; UPDATE taxonomie.taxref t SET id_statut = it.pf FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'nc' THEN UPDATE taxonomie.import_taxref SET nc = NULL Where nc=''; UPDATE taxonomie.taxref t SET id_statut = it.nc FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'wf' THEN UPDATE taxonomie.import_taxref SET wf = NULL Where wf=''; UPDATE taxonomie.taxref t SET id_statut = it.wf FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSIF :region = 'cli' THEN UPDATE taxonomie.import_taxref SET cli = NULL Where cli=''; UPDATE taxonomie.taxref t SET id_statut = it.cli FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
ELSE UPDATE taxonomie.import_taxref SET fr = NULL WHERE fr=''; UPDATE taxonomie.taxref t SET id_statut = it.fr FROM taxonomie.import_taxref it WHERE it.cd_nom = t.cd_nom;
END IF;
END $$;

-- DELETE MISSING CD_NOM if not keep_cdnom is specify
DO $$ BEGIN
IF :keep_cd_nom = FALSE THEN
Expand Down
16 changes: 11 additions & 5 deletions apptax/taxonomie/commands/taxref_v15_v16.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def import_bdc_statuts_v17(logger):
)


def import_taxref(logger, num_version, taxref_archive_name, taxref_file_name):
def import_taxref(logger, num_version, taxref_archive_name, taxref_file_name, region="fr"):
with open_remote_file(base_url, taxref_archive_name, open_fct=ZipFile) as archive:
with archive.open("habitats_note.csv") as f:
logger.info(f"Insert TAXREF v{num_version} habitats…")
Expand Down Expand Up @@ -114,7 +114,7 @@ def import_taxref(logger, num_version, taxref_archive_name, taxref_file_name):
),
source_cols=(
"cd_nom::int",
"NULLIF(fr, '') as id_statut",
f"NULLIF({region}, '') as id_statut",
"habitat::int as id_habitat",
"rang as id_rang",
"regne",
Expand Down Expand Up @@ -146,15 +146,17 @@ def import_taxref(logger, num_version, taxref_archive_name, taxref_file_name):

@click.command()
@click.option("--skip-bdc-statuts", is_flag=True, help="Skip import of BDC Statuts")
@click.option("--region", type=str, default="fr", help="Region : column status")
@with_appcontext
def import_v15(skip_bdc_statuts):
def import_v15(skip_bdc_statuts, region):
logger = logging.getLogger()

import_taxref(
logger,
num_version="15",
taxref_archive_name="TAXREF_v15_2021.zip",
taxref_file_name="TAXREFv15.txt",
region=region,
)

if not skip_bdc_statuts:
Expand All @@ -171,15 +173,17 @@ def import_v15(skip_bdc_statuts):

@click.command()
@click.option("--skip-bdc-statuts", is_flag=True, help="Skip import of BDC Statuts")
@click.option("--region", type=str, default="fr", help="Region : column status")
@with_appcontext
def import_v16(skip_bdc_statuts):
def import_v16(skip_bdc_statuts, region):
logger = logging.getLogger()

import_taxref(
logger,
num_version="16",
taxref_archive_name="TAXREF_v16_2022.zip",
taxref_file_name="TAXREFv16.txt",
region=region,
)

if not skip_bdc_statuts:
Expand All @@ -196,15 +200,17 @@ def import_v16(skip_bdc_statuts):

@click.command()
@click.option("--skip-bdc-statuts", is_flag=True, help="Skip import of BDC Statuts")
@click.option("--region", type=str, default="fr", help="Region : column status")
@with_appcontext
def import_v17(skip_bdc_statuts):
def import_v17(skip_bdc_statuts, region):
logger = logging.getLogger()

import_taxref(
logger,
num_version="17",
taxref_archive_name="TAXREF_v17_2024.zip",
taxref_file_name="TAXREFv17.txt",
region=region,
)

if not skip_bdc_statuts:
Expand Down

0 comments on commit c82a1e5

Please sign in to comment.