diff --git a/apptax/migrations/versions/44447746cacc_drop_t_medias_supprime_column.py b/apptax/migrations/versions/44447746cacc_drop_t_medias_supprime_column.py new file mode 100644 index 00000000..80d2e2da --- /dev/null +++ b/apptax/migrations/versions/44447746cacc_drop_t_medias_supprime_column.py @@ -0,0 +1,58 @@ +"""drop t_medias.supprime column + +Revision ID: 44447746cacc +Revises: 0db13d65cb27 +Create Date: 2023-08-04 14:04:28.235799 + +""" + +import os +import shutil +from pathlib import Path +from flask import current_app +from alembic import op +import sqlalchemy as sa +from sqlalchemy.sql import false + + +# revision identifiers, used by Alembic. +revision = "44447746cacc" +down_revision = "0db13d65cb27" +branch_labels = None +depends_on = None + + +def upgrade(): + # Suppression des fichiers médias + conn = op.get_bind() + res = conn.execute( + """SELECT id_media, chemin + FROM taxonomie.t_medias + WHERE NOT NULLIF(chemin , '') IS NULL AND supprime = TRUE;""" + ) + + media_path = Path(current_app.config["MEDIA_FOLDER"], "taxhub").absolute() + + for m in res: + # Fichier principal + try: + os.remove(media_path / Path(m[1])) + except FileNotFoundError: + pass + # Thumbnail + try: + shutil.rmtree(f"{media_path}/thumb/{m[0]}") + except FileNotFoundError: + pass + + # Suppression des enregistrements médias supprimés logiquement + op.execute("DELETE FROM taxonomie.t_medias AS tm WHERE supprime = TRUE;") + op.drop_column(table_name="t_medias", column_name="supprime", schema="taxonomie") + + +def downgrade(): + op.add_column( + table_name="t_medias", + column=sa.Column("supprime", sa.Boolean, nullable=False, server_default=false()), + schema="taxonomie", + ) diff --git a/apptax/taxonomie/commands/migrate_taxref/test_commands_migrate.py b/apptax/taxonomie/commands/migrate_taxref/test_commands_migrate.py index 69cada35..98dd8358 100644 --- a/apptax/taxonomie/commands/migrate_taxref/test_commands_migrate.py +++ b/apptax/taxonomie/commands/migrate_taxref/test_commands_migrate.py @@ -92,7 +92,6 @@ def populate_data(sample_data): url="https://upload.wikimedia.org/wikipedia/commons/f/f0/Taxa-4x35-tagskilt.jpg", id_type=1, is_public=True, - supprime=False, ) db.session.add(media) diff --git a/apptax/taxonomie/models.py b/apptax/taxonomie/models.py index ced838c8..dd97643f 100644 --- a/apptax/taxonomie/models.py +++ b/apptax/taxonomie/models.py @@ -296,7 +296,6 @@ class TMedias(db.Model): source = db.Column(db.Unicode) licence = db.Column(db.Unicode) is_public = db.Column(db.BOOLEAN) - supprime = db.Column(db.BOOLEAN) id_type = db.Column( db.Integer, ForeignKey(BibTypesMedia.id_type), diff --git a/apptax/tests/fixtures.py b/apptax/tests/fixtures.py index 96f1e435..b2abdb28 100644 --- a/apptax/tests/fixtures.py +++ b/apptax/tests/fixtures.py @@ -144,7 +144,6 @@ def nom_with_media(): titre="test", url="http://photo.com", is_public=True, - supprime=False, types=BibTypesMedia.query.first(), ) taxon.medias.append(media) diff --git a/apptax/utils/taxref_api.py b/apptax/utils/taxref_api.py index 99291bd5..e5aca3bd 100644 --- a/apptax/utils/taxref_api.py +++ b/apptax/utils/taxref_api.py @@ -65,7 +65,6 @@ def import_inpn_media(cd_ref, cd_nom, logger=None): m_obj.desc_media = m_inpn["title"] m_obj.licence = m_inpn["licence"] m_obj.is_public = True - m_obj.supprime = False m_obj.source = "INPN" m_obj.id_type = type.id_type db.session.add(m_obj) diff --git a/docs/changelog.md b/docs/changelog.md index 5dc1f6c8..2a0baf4f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -10,6 +10,7 @@ - Remplacement du fichier de configuration `config.py` par une fichier toml : `taxhub_config.toml` (#517) - Création d'une commande de récupération des médias de l'inpn et suppression des anciens scripts. Pour spécifier les taxons à traiter la commande prend comme paramètre un fichier contenant une liste de cd_nom `flask taxref import-inpn-media list_cd_ref.csv` +- Suppression de la colonne supprime des médias qui effectuait une suppression logique et non physique des médias. **⚠️ Notes de version** - Les données de la table "bib_nom" on été sauvegardées dans une liste nommée "Save bib_nom". Le champs "nom_français" ainsi que "commentaire" de cette table ne sont pas conservés dans la version 2.0.0 (ils n'étaient plus utilisés dans les recherche de taxons depuis plusieurs versions).