Skip to content

Commit

Permalink
Merge pull request #224 from PnX-SI/develop
Browse files Browse the repository at this point in the history
Develop > Master / Prepa 1.7.0
  • Loading branch information
camillemonchicourt authored Jun 17, 2020
2 parents 059d54b + d5faefa commit cd5f59d
Show file tree
Hide file tree
Showing 8 changed files with 101 additions and 43 deletions.
12 changes: 6 additions & 6 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Documentation

La documentation d'installation de TaxHub est disponible sur http://taxhub.readthedocs.io.

TaxHub peut aussi être installé à partir du script d'installation globale de GeoNature : http://geonature.readthedocs.io/fr/latest/install_all/README.html.
TaxHub peut aussi être installé à partir du script d'installation globale de GeoNature : http://docs.geonature.fr/installation-all.html.

Principes
=========
Expand All @@ -31,22 +31,22 @@ Une partie correspond au TAXREF complet tel que fourni par le MNHN. Son contenu

Une partie correspond à la partie spécifique à chaque structure. Il faut commencer par renseigner la table ``bib_noms`` en selectionnant les taxons qui nous intéressent dans le TAXREF.

Il faut ensuite y greffer des informations spécifiques grace à ``bib_attributs`` (patrimonialité, marqueurs, autres selon les besoins) et définir des sous-listes de taxons (amphibiens, ....) dans ``bib_listes`` en fonction des besoins.
Il faut ensuite y greffer des informations spécifiques grace à ``bib_attributs`` (patrimonialité, marqueurs, autres selon les besoins) et définir des listes de taxons (espèces d'un protocole, ....) dans ``bib_listes`` en fonction des besoins.

Technologies
------------

- Langages : Python, HTML, JS, CSS
- BDD : PostgreSQL, PostGIS
- Serveur : Debian ou Ubuntu
- Framework python : flask
- Framework python : Flask
- Framework JS : AngularJS
- Framework CSS : Bootstrap

Gestion des droits
------------------

Elle est centralisée dans l'application `UsersHub <https://github.com/PnX-SI/UsersHub>`_. Il faut donc disposer d'une application ``TaxHub`` dans UsersHub et y intégrer des groupes et/ou utilisateurs.
Elle est centralisée dans l'application `UsersHub <https://github.com/PnX-SI/UsersHub>`_. Il faut donc disposer de l'application ``TaxHub`` dans UsersHub et y intégrer des groupes et/ou utilisateurs.

Niveaux de droits :

Expand All @@ -67,11 +67,11 @@ Auteurs
- Thomas Lebard
- Camille Monchicourt

License
Licence
-------

* OpenSource - GPL V3
* Copyright (c) 2014-2019 - Parc National des Écrins - Parc national des Cévennes
* Copyright (c) 2014-2020 - Parc National des Écrins - Parc national des Cévennes


.. image:: http://geonature.fr/img/logo-pne.jpg
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.7.0.dev0
1.7.0
1 change: 1 addition & 0 deletions apptax/taxonomie/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ class VMTaxrefHierarchie(serializableModel, db.Model):
phylum = db.Column(db.Unicode)
classe = db.Column(db.Unicode)
ordre = db.Column(db.Unicode)
famille = db.Column(db.Unicode)
lb_nom = db.Column(db.Unicode)
id_rang = db.Column(db.Unicode)
nb_tx_fm = db.Column(db.Integer)
Expand Down
37 changes: 20 additions & 17 deletions apptax/taxonomie/routestaxref.py
Original file line number Diff line number Diff line change
Expand Up @@ -309,34 +309,34 @@ def get_AllTaxrefNameByListe(id_liste):
Route utilisée pour les autocompletes
Si le paramètre search_name est passé, la requête SQL utilise l'algorithme
des trigrames pour améliorer la pertinence des résultats
Route utilisé par le mobile pour remonter la liste des taxons
params URL:
- id_liste : identifiant de la liste
params GET:
params GET (facultatifs):
- search_name : nom recherché. Recherche basé sur la fonction
ilike de sql avec un remplacement des espaces par %
- regne : filtre sur le regne INPN
- group2_inpn : filtre sur le groupe 2 de l'INPN
- limit: nombre de résultat
- offset: numéro de la page
"""

search_name = request.args.get("search_name")
if not search_name:
return "No search pattern provided", 400
else:
q = (
db.session.query(
VMTaxrefListForautocomplete,
q = (
db.session.query(VMTaxrefListForautocomplete)
.join(BibNoms, BibNoms.cd_nom == VMTaxrefListForautocomplete.cd_nom)
.join(
CorNomListe,
CorNomListe.id_nom == BibNoms.id_nom
and CorNomListe.id_liste == id_liste,
)
)
if search_name:
q = q.add_columns(
func.similarity(
VMTaxrefListForautocomplete.search_name, search_name
).label("idx_trgm"),
)
.join(BibNoms, BibNoms.cd_nom == VMTaxrefListForautocomplete.cd_nom)
.join(
CorNomListe,
CorNomListe.id_nom == BibNoms.id_nom
and CorNomListe.id_liste == id_liste,
)
).label("idx_trgm")
)

search_name = search_name.replace(" ", "%")
q = q.filter(
VMTaxrefListForautocomplete.search_name.ilike("%" + search_name + "%")
Expand All @@ -356,7 +356,10 @@ def get_AllTaxrefNameByListe(id_liste):
limit = int(request.args.get("limit", 20))
page = int(request.args.get("offset", 0))
data = q.limit(limit).offset(page * limit).all()
return [d[0].as_dict() for d in data]
if search_name:
return [d[0].as_dict() for d in data]
else:
return [d.as_dict() for d in data]


@adresses.route("/bib_lr", methods=["GET"])
Expand Down
8 changes: 4 additions & 4 deletions data/taxhubdb.sql
Original file line number Diff line number Diff line change
Expand Up @@ -202,9 +202,9 @@ $BODY$
BEGIN
RETURN QUERY
WITH RECURSIVE descendants AS (
SELECT tx1.cd_nom, tx1.cd_ref FROM taxonomie.taxref tx1 WHERE tx1.cd_taxsup = id
SELECT tx1.cd_nom, tx1.cd_ref FROM taxonomie.taxref tx1 WHERE tx1.cd_sup = id
UNION ALL
SELECT tx2.cd_nom, tx2.cd_ref FROM descendants d JOIN taxonomie.taxref tx2 ON tx2.cd_taxsup = d.cd_nom
SELECT tx2.cd_nom, tx2.cd_ref FROM descendants d JOIN taxonomie.taxref tx2 ON tx2.cd_sup = d.cd_nom
)
SELECT * FROM descendants;

Expand All @@ -224,9 +224,9 @@ $BODY$
BEGIN
RETURN QUERY
WITH RECURSIVE descendants AS (
SELECT tx1.cd_nom, tx1.cd_ref FROM taxonomie.taxref tx1 WHERE tx1.cd_taxsup = ANY(ids)
SELECT tx1.cd_nom, tx1.cd_ref FROM taxonomie.taxref tx1 WHERE tx1.cd_sup = ANY(ids)
UNION ALL
SELECT tx2.cd_nom, tx2.cd_ref FROM descendants d JOIN taxonomie.taxref tx2 ON tx2.cd_taxsup = d.cd_nom
SELECT tx2.cd_nom, tx2.cd_ref FROM descendants d JOIN taxonomie.taxref tx2 ON tx2.cd_sup = d.cd_nom
)
SELECT * FROM descendants;

Expand Down
54 changes: 54 additions & 0 deletions data/update1.6.5to1.7.0.sql
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,57 @@ CREATE INDEX i_tri_vm_taxref_list_forautocomplete_search_name
-- et des fonctions triggers
DROP FUNCTION taxonomie.trg_fct_refresh_nomfrancais_mv_taxref_list_forautocomplete();
DROP FUNCTION taxonomie.trg_fct_refresh_mv_taxref_list_forautocomplete();

-- Modification d'un trigger sur les medias
DROP TRIGGER tri_unique_type1 ON taxonomie.t_medias;
CREATE TRIGGER tri_unique_type1
AFTER INSERT OR UPDATE
ON taxonomie.t_medias
FOR EACH ROW
EXECUTE PROCEDURE taxonomie.unique_type1();


-- Modification des fonction find_all_taxons_children :
--- utilisation de cd_sup au lieu de cd_taxsup pour prendre
-- en compte des rangs intermediares
CREATE OR REPLACE FUNCTION taxonomie.find_all_taxons_children(id integer)
RETURNS TABLE (cd_nom int, cd_ref int) AS
$BODY$
--Param : cd_nom ou cd_ref d'un taxon quelque soit son rang
--Retourne le cd_nom de tous les taxons enfants sous forme d'un jeu de données utilisable comme une table
--Usage SELECT taxonomie.find_all_taxons_children(197047);
--ou SELECT * FROM atlas.vm_taxons WHERE cd_ref IN(SELECT * FROM taxonomie.find_all_taxons_children(197047))
BEGIN
RETURN QUERY
WITH RECURSIVE descendants AS (
SELECT tx1.cd_nom, tx1.cd_ref FROM taxonomie.taxref tx1 WHERE tx1.cd_sup = id
UNION ALL
SELECT tx2.cd_nom, tx2.cd_ref FROM descendants d JOIN taxonomie.taxref tx2 ON tx2.cd_sup = d.cd_nom
)
SELECT * FROM descendants;

END;
$BODY$
LANGUAGE plpgsql IMMUTABLE;



CREATE OR REPLACE FUNCTION taxonomie.find_all_taxons_children(IN ids integer[])
RETURNS TABLE(cd_nom integer, cd_ref integer) AS
$BODY$
--Param : cd_nom ou cd_ref d'un taxon quelque soit son rang
--Retourne le cd_nom de tous les taxons enfants sous forme d'un jeu de données utilisable comme une table
--Usage SELECT taxonomie.find_all_taxons_children(197047);
--ou SELECT * FROM atlas.vm_taxons WHERE cd_ref IN(SELECT * FROM taxonomie.find_all_taxons_children(197047))
BEGIN
RETURN QUERY
WITH RECURSIVE descendants AS (
SELECT tx1.cd_nom, tx1.cd_ref FROM taxonomie.taxref tx1 WHERE tx1.cd_sup = ANY(ids)
UNION ALL
SELECT tx2.cd_nom, tx2.cd_ref FROM descendants d JOIN taxonomie.taxref tx2 ON tx2.cd_sup = d.cd_nom
)
SELECT * FROM descendants;

END;
$BODY$
LANGUAGE plpgsql IMMUTABLE;
29 changes: 15 additions & 14 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,40 @@
CHANGELOG
=========

1.7.0 (unreleased)
1.7.0 (2020-06-17)
------------------

**A vérifier avant release**

* Voir https://github.com/PnX-SI/TaxHub/compare/develop
* Reporter version Taxref, fonctions publics et BDC dans install_all de GeoNature ! Voir évolutions install_db.sh (https://github.com/PnX-SI/TaxHub/compare/develop#diff-3989ff5752ff641e2e850403d8021b1c)

**Nouveautés**
**🚀 Nouveautés**

* Mise à jour de Taxref en version 13
* Intégration brute de la Base de connaissance des statuts des espèces correspondant à la version 13 de Taxref, en vue de la révision des statuts de protection (#157)
* Migration de la librairie OpenCV vers PIL (plus légère) pour le redimensionnement des images et suppression de la librairie dépendante NumPy (#209)
* Mise à jour des librairies Python (Flask 1.1.1, Jinja 2.11.1, Werkzeug 1.0.0, gunicorn20.0.4) et Javascript (AngularJS 1.7.9, Bootstrap 3.4.1)
* Suppression du paramètre ``id_application`` du fichier ``constants.js`` de façon à ce qu'il soit récupéré de façon dynamique
* Ajout de fonctions génériques de détection, suppression et création des vues dépendantes dans le schéma ``public`` (``data/generic_drop_and_restore_deps_views.sql``)
* Route ``allnamebylist`` enrichie avec un paramètre ``offset`` (#208) pour que l'application Occtax-mobile puisse récupérer les taxons par lots
* Route ``allnamebylist`` enrichie avec un paramètre ``offset`` pour que l'application Occtax-mobile puisse récupérer les taxons par lots (#208)
* Utilisation du ``cd_sup`` au lieu du ``cd_taxsup`` dans la fonction ``taxonomie.find_all_taxons_children()`` pour prendre en compte les rangs intermediaires
* Ajout de la colonne famille au modèle ``VMTaxrefHierarchie`` (#211)
* Ajout d'un manuel administrateur listant les fonctions SQL de la BDD (par @jbdesbas)
* Révision et compléments de la documentation (par @ksamuel)
* Ajout d'un lien vers le manuel utilisateur depuis la barre de navigation de l'application
* Changement de modélisation de la table ``vm_taxref_list_forautocomplete`` qui redevient une vue matérialisée (#219) + Autre tickets réglés par cela...
* Changement de modélisation de la table ``vm_taxref_list_forautocomplete`` qui redevient une vue matérialisée (#219). A rafraichir quand on met à jour Taxref

**Corrections**
**🐛 Corrections**

* Correction d'un bug de suppression des attributs suite à une erreur d'enregistrement
* Correction d'un bug de suppression des attributs suite à une erreur d'enregistrement (#80)
* Correction d'un bug lors de la modification d'un média
* Correction des doublons (#216) et des noms manquants (#194) dans la vue matérialisée ``vm_taxref_list_forautocomplete`` (#219)
* Impossibilité d'associer une valeur nulle à un attribut
* Nettoyage et suppression des scripts SQL et de leurs mentions à GeoNature v1 et UsersHub v1

**Notes de version**
**⚠️ Notes de version**

* Vous pouvez supprimer le paramètre ``id_application`` du fichier ``constants.js`` car il n'est plus utilisé
* Vous pouvez supprimer les anciennes listes de taxons qui correspondaient à des groupes (
* Vous pouvez supprimer les anciennes listes de taxons qui correspondaient à des groupes utilisés par GeoNature v1 (Flore, Fonge, Vertébrés, Invertébrés, Amphibiens, Oiseaux, Poissons...)
* Exécutez le script SQL de mise à jour de la BDD (``data/update1.6.5to1.7.0.sql``)
* Suivez la procédure standard de mise à jour de TaxHub : https://taxhub.readthedocs.io/fr/latest/installation.html#mise-a-jour-de-l-application
* Vous pouvez mettre à jour Taxref en version 13 avec la documentation et les scripts dans ``data/scripts/update_taxref/``
* Vous pouvez mettre à jour Taxref en version 13 avec la documentation et les scripts du dossier ``data/scripts/update_taxref/`` (https://github.com/PnX-SI/TaxHub/tree/master/data/scripts/update_taxref)

1.6.5 (2020-02-17)
------------------
Expand Down
1 change: 0 additions & 1 deletion install_db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,6 @@ then
export PGPASSWORD=$user_pg_pass;psql -h $db_host -U $user_pg -d $db_name -f /tmp/usershub-data.sql &>> $LOG_DIR/installdb/install_db.log
export PGPASSWORD=$user_pg_pass;psql -h $db_host -U $user_pg -d $db_name -f /tmp/usershub-dataset.sql &>> $LOG_DIR/installdb/install_db.log
export PGPASSWORD=$user_pg_pass;psql -h $db_host -U $user_pg -d $db_name -f data/adds_for_usershub.sql &>> $LOG_DIR/installdb/install_db.log
export PGPASSWORD=$user_pg_pass;psql -h $db_host -U $user_pg -d $db_name -f data/adds_for_usershub_views.sql &>> $LOG_DIR/installdb/install_db.log
else
echo "Connexion à la base Utilisateur..."
cp data/create_fdw_utilisateurs.sql /tmp/taxhub/create_fdw_utilisateurs.sql
Expand Down

0 comments on commit cd5f59d

Please sign in to comment.