From b5313e56b5a8deb727f40077718efa9079e58d6e Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Tue, 1 Jun 2021 21:51:12 +0200 Subject: [PATCH 01/66] install_app.sh typo --- install/install_app.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/install_app.sh b/install/install_app.sh index 7b3e7fed..ca970301 100755 --- a/install/install_app.sh +++ b/install/install_app.sh @@ -18,7 +18,7 @@ fi sudo apt update && sudo apt -y install python2.7 git gcc curl gunicorn python-setuptools lsb-release apt-transport-https wget sudo apt -y install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl libbz2-dev sudo apt -y install apache2 python-dev libpq-dev libgeos-dev supervisor unzip virtualenv libcurl4-openssl-dev libssl-dev -sudo apt -y install apt-get install build-essential libglib2.0-0 libsm6 libxext6 libxrender-dev +sudo apt -y install build-essential libglib2.0-0 libsm6 libxext6 libxrender-dev RELEASE=$(cat /etc/os-release | grep VERSION_CODENAME |cut -d "=" -f2) sudo apt install python3 python3-dev python3-pip -y From d684938908e1dca872ab95f4131bbc9fa6bbfef1 Mon Sep 17 00:00:00 2001 From: lpofredc Date: Tue, 1 Jun 2021 23:35:38 +0200 Subject: [PATCH 02/66] fix: wip remove local taxonomy dependencies --- backend/gncitizen/core/taxonomy/routes.py | 33 ++++------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/backend/gncitizen/core/taxonomy/routes.py b/backend/gncitizen/core/taxonomy/routes.py index a13828ee..a0350c4d 100644 --- a/backend/gncitizen/core/taxonomy/routes.py +++ b/backend/gncitizen/core/taxonomy/routes.py @@ -89,34 +89,11 @@ def get_list(id): description: A list of all species lists """ - if current_app.config.get("API_TAXHUB") is not None: - current_app.logger.info("Calling TaxHub REST API.") - return mkTaxonRepository(id) - - else: - current_app.logger.info("Select TaxHub schema.") - try: - data = ( - db.session.query(BibNoms, Taxref, TMedias) - .distinct(BibNoms.cd_ref) - .join(CorNomListe, CorNomListe.id_nom == BibNoms.id_nom) - .join(Taxref, Taxref.cd_ref == BibNoms.cd_ref) - .outerjoin(TMedias, TMedias.cd_ref == BibNoms.cd_ref) - .filter(CorNomListe.id_liste == id) - .all() - ) - # current_app.logger.debug( - # [{'nom': d[0], 'taxref': d[1]} for d in data]) - return [ - { - "nom": d[0].as_dict(), - "taxref": d[1].as_dict(), - "medias": d[2].as_dict() if d[2] else None, - } - for d in data - ] - except Exception as e: - return {"message": str(e)}, 400 + try: + r = mkTaxonRepository(id) + return r + except Exception as e: + return {"message": str(e)}, 400 # @taxo_api.route('/taxonomy/lists/full', methods=['GET']) From b48c6bbc9ecfaffe7b344a3b5c5277a5d66fe996 Mon Sep 17 00:00:00 2001 From: lpofredc Date: Tue, 1 Jun 2021 23:35:50 +0200 Subject: [PATCH 03/66] feat: order taxa list --- backend/gncitizen/utils/taxonomy.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/gncitizen/utils/taxonomy.py b/backend/gncitizen/utils/taxonomy.py index ad14f8c0..3659d211 100644 --- a/backend/gncitizen/utils/taxonomy.py +++ b/backend/gncitizen/utils/taxonomy.py @@ -45,8 +45,11 @@ def taxhub_rest_get_taxon(taxhub_id: int) -> Taxon: def mkTaxonRepository(taxhub_list_id: int) -> List[Taxon]: taxa = taxhub_rest_get_taxon_list(taxhub_list_id) taxon_ids = [item["id_nom"] for item in taxa.get("items")] - return [taxhub_rest_get_taxon(taxon_id) for taxon_id in taxon_ids] - + r = [taxhub_rest_get_taxon(taxon_id) for taxon_id in taxon_ids] + current_app.logger.debug(r) + + # r = r.sort(key=lambda item: item.get('nom_francais')) + return sorted(r, key = lambda item: item['nom_francais']) def get_specie_from_cd_nom(cd_nom): """get specie datas from taxref id (cd_nom) From 57fdc04d18bd892b01f57466892e0e8f9094c7f9 Mon Sep 17 00:00:00 2001 From: lpofredc Date: Tue, 1 Jun 2021 23:36:02 +0200 Subject: [PATCH 04/66] update requirements --- backend/requirements-dev.txt | 49 +++++++++++++++++++++++++ backend/requirements.txt | 71 ++++++++++++++++++++---------------- 2 files changed, 88 insertions(+), 32 deletions(-) create mode 100644 backend/requirements-dev.txt diff --git a/backend/requirements-dev.txt b/backend/requirements-dev.txt new file mode 100644 index 00000000..9a980ad8 --- /dev/null +++ b/backend/requirements-dev.txt @@ -0,0 +1,49 @@ +appdirs==1.4.4; python_version >= "3.6" +attrs==21.2.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +black==20.8b1; python_version >= "3.6" +certifi==2020.12.5; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +chardet==4.0.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +click==7.1.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +coloredlogs==15.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +dataclasses==0.8; python_version >= "3.6" and python_version < "3.7" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.7" or python_full_version >= "3.5.0" and python_version >= "3.6" and python_version < "3.7") +flasgger==0.9.5 +flask-admin==1.5.8 +flask-ckeditor==0.4.6 +flask-cors==3.0.10 +flask-jwt-extended==4.2.0; python_version >= "3.6" and python_version < "4" +flask-sqlalchemy==2.5.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +flask==1.1.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +geoalchemy2==0.8.5 +geojson==2.5.0 +greenlet==1.1.0; python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3" +gunicorn==20.1.0; python_version >= "3.5" +humanfriendly==9.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +idna==2.10; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +importlib-metadata==4.0.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.6.0" and python_version < "3.8" and python_version >= "3.6" +isort==5.8.0; python_version >= "3.6" and python_version < "4.0" +itsdangerous==2.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +jinja2==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +jsonschema==3.2.0 +markupsafe==2.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +mistune==0.8.4 +mypy-extensions==0.4.3; python_version >= "3.6" +passlib==1.7.4 +pathspec==0.8.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +psycopg2-binary==2.8.6; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +pyjwt==2.1.0; python_version >= "3.6" and python_version < "4" +pyreadline==2.1; python_version >= "2.7" and python_full_version < "3.0.0" and sys_platform == "win32" or python_full_version >= "3.5.0" and sys_platform == "win32" +pyrsistent==0.17.3; python_version >= "3.5" +pyyaml==5.4.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +regex==2021.4.4; python_version >= "3.6" +requests==2.25.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +shapely==1.7.1 +six==1.16.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" +sqlalchemy==1.4.15; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0") +toml==0.10.2; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.3.0") +typed-ast==1.4.3; python_version >= "3.6" +typing-extensions==3.10.0.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.6.0" and python_version < "3.8" and python_version >= "3.6" +urllib3==1.26.4; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +werkzeug==2.0.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.5.0" and python_version >= "3.6" and python_version < "4" +wtforms==2.3.3 +xlwt==1.3.0 +zipp==3.4.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.6.0" and python_version < "3.8" and python_version >= "3.6" diff --git a/backend/requirements.txt b/backend/requirements.txt index 221b7fdb..625ff53c 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,35 +1,42 @@ -certifi==2019.6.16 -chardet==3.0.4 -Click==7.0 -colorlog==4.0.2 -flasgger==0.9.3 -Flask==1.1.1 -Flask-Admin==1.5.3 -Flask-CKEditor==0.4.3 -Flask-Cors==3.0.8 -Flask-JWT-Extended==3.21.0 -Flask-SQLAlchemy==2.4.0 -GeoAlchemy2==0.6.3 +attrs==21.2.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +certifi==2020.12.5; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +chardet==4.0.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +click==7.1.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +coloredlogs==15.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +dataclasses==0.8; python_version >= "3.6" and python_version < "3.7" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.7" or python_full_version >= "3.5.0" and python_version >= "3.6" and python_version < "3.7") +flasgger==0.9.5 +flask-admin==1.5.8 +flask-ckeditor==0.4.6 +flask-cors==3.0.10 +flask-jwt-extended==4.2.0; python_version >= "3.6" and python_version < "4" +flask-sqlalchemy==2.5.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +flask==1.1.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +geoalchemy2==0.8.5 geojson==2.5.0 -gunicorn==20.0.4 -idna==2.8 -itsdangerous==1.1.0 -Jinja2==2.10.1 -jsonschema==2.6.0 -MarkupSafe==1.1.1 +greenlet==1.1.0; python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3" +gunicorn==20.1.0; python_version >= "3.5" +humanfriendly==9.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +idna==2.10; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +importlib-metadata==4.0.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.6.0" and python_version < "3.8" and python_version >= "3.6" +itsdangerous==2.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +jinja2==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +jsonschema==3.2.0 +markupsafe==2.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" mistune==0.8.4 -passlib==1.7.1 -psycopg2-binary==2.8.3 -PyJWT==1.7.1 -PyYAML==5.1.2 -requests==2.22.0 -Shapely==1.6.4.post2 -six==1.12.0 -SQLAlchemy==1.3.7 -toml==0.10.0 -urllib3==1.25.3 -Werkzeug==0.15.5 -WTForms==2.2.1 -gunicorn==20.0.4 -httplib2==0.19.0 +passlib==1.7.4 +psycopg2-binary==2.8.6; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +pyjwt==2.1.0; python_version >= "3.6" and python_version < "4" +pyreadline==2.1; python_version >= "2.7" and python_full_version < "3.0.0" and sys_platform == "win32" or python_full_version >= "3.5.0" and sys_platform == "win32" +pyrsistent==0.17.3; python_version >= "3.5" +pyyaml==5.4.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +requests==2.25.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +shapely==1.7.1 +six==1.16.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" +sqlalchemy==1.4.15; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0") +toml==0.10.2; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.3.0") +typing-extensions==3.10.0.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.6.0" and python_version < "3.8" and python_version >= "3.6" +urllib3==1.26.4; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +werkzeug==2.0.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.5.0" and python_version >= "3.6" and python_version < "4" +wtforms==2.3.3 xlwt==1.3.0 +zipp==3.4.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.6.0" and python_version < "3.8" and python_version >= "3.6" From 6751aab3b149b1400cefb752450ed94ffe34e899 Mon Sep 17 00:00:00 2001 From: lpofredc Date: Tue, 1 Jun 2021 23:37:17 +0200 Subject: [PATCH 05/66] wip: using poetry --- backend/start_gunicorn.sh | 2 +- install/install_app.sh | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/backend/start_gunicorn.sh b/backend/start_gunicorn.sh index b0cfda21..07063761 100755 --- a/backend/start_gunicorn.sh +++ b/backend/start_gunicorn.sh @@ -16,7 +16,7 @@ echo "info: FLASKDIR: $FLASKDIR" echo "info: APP_DIR: $APP_DIR" # activate the virtualenv -venv_dir=${venv_dir:-"venv"} +venv_dir=${venv_dir:-".venv"} source $FLASKDIR/$venv_dir/bin/activate cd $FLASKDIR diff --git a/install/install_app.sh b/install/install_app.sh index 7b3e7fed..72d8ca8d 100755 --- a/install/install_app.sh +++ b/install/install_app.sh @@ -53,7 +53,7 @@ cd ${DIR} #adduser synthese www-data #fi cd $HOME -python3 -m pip install virtualenv==20.0.1 --user +python3 -m pip install poetry --user sudo a2enmod rewrite proxy proxy_http sudo apache2ctl restart @@ -207,14 +207,13 @@ fi cd .. # Création du venv -venv_path=$DIR/backend/${venv_dir:-"venv"} -if [ ! -f $venv_path/bin/activate ]; then - python3 -m virtualenv $venv_path -fi -source $venv_path/bin/activate -pip install --upgrade pip -pip install -r backend/requirements.txt -deactivate +# venv_path=$DIR/backend/${venv_dir:-"venv"} +# if [ ! -f $venv_path/bin/activate ]; then +# python3 -m virtualenv $venv_path +# fi +cd $DIR/backend +poetry install +cd $DIR # Copy main medias to media mkdir -p $DIR/media From fb01cc11ff04f8b1f6f9af676117186a03a0f895 Mon Sep 17 00:00:00 2001 From: lpofredc Date: Wed, 2 Jun 2021 00:12:04 +0200 Subject: [PATCH 06/66] doc: precise config file path --- install/install_app.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/install_app.sh b/install/install_app.sh index 72d8ca8d..6c498cc6 100755 --- a/install/install_app.sh +++ b/install/install_app.sh @@ -7,7 +7,7 @@ DIR=$(pwd) if [ ! -f config/settings.ini ]; then echo 'Fichier de configuration du projet non existant, copie du template...' cp config/settings.ini.template config/settings.ini - echo "Fichier de config disponible : $DIR." + echo "Fichier de config disponible : $DIR/config/settings.ini." echo "Merci de renseigner le fichier et de relancer la commande install_app.sh." exit fi From 033def670ece9be8289acf140c7e6acfedeef2ca Mon Sep 17 00:00:00 2001 From: lpofredc Date: Wed, 2 Jun 2021 00:57:19 +0200 Subject: [PATCH 07/66] feat: disallow ckeditor cleanup code in backoffice --- backend/templates/edit.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/templates/edit.html b/backend/templates/edit.html index 3f71b0f2..20237bca 100644 --- a/backend/templates/edit.html +++ b/backend/templates/edit.html @@ -3,4 +3,8 @@ {% block tail %} {{ super() }} {{ ckeditor.load() }} + + {% endblock %} \ No newline at end of file From 5446283bf72324a5914b69cc99500dfb33fc111a Mon Sep 17 00:00:00 2001 From: lpofredc Date: Wed, 2 Jun 2021 01:05:32 +0200 Subject: [PATCH 08/66] fix: code cleanup --- backend/gncitizen/core/commons/admin.py | 2 - backend/gncitizen/core/commons/routes.py | 28 +++++++---- data/maintenance/index.html | 64 ++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 data/maintenance/index.html diff --git a/backend/gncitizen/core/commons/admin.py b/backend/gncitizen/core/commons/admin.py index 72c9e667..576c83bc 100644 --- a/backend/gncitizen/core/commons/admin.py +++ b/backend/gncitizen/core/commons/admin.py @@ -8,7 +8,6 @@ from flask import Blueprint, current_app, request, flash from flask_admin.contrib.geoa import ModelView -from flask_admin.form import SecureForm from flask_admin.form.upload import FileUploadField from flask_ckeditor import CKEditorField from flask_jwt_extended import get_jwt_identity @@ -87,7 +86,6 @@ class ProjectView(ModelView): class ProgramView(ModelView): - # form_base_class = SecureForm form_overrides = {"long_desc": CKEditorField, "taxonomy_list": SelectField} form_args = {"taxonomy_list": {"choices": taxonomy_lists(), "coerce": int}} create_template = "edit.html" diff --git a/backend/gncitizen/core/commons/routes.py b/backend/gncitizen/core/commons/routes.py index aaa11a1f..d88c4905 100644 --- a/backend/gncitizen/core/commons/routes.py +++ b/backend/gncitizen/core/commons/routes.py @@ -5,7 +5,6 @@ import urllib.parse from flask import Blueprint, request, current_app from flask_jwt_extended import jwt_optional, get_jwt_identity -from flask_admin.form import SecureForm from flask_admin.contrib.geoa import ModelView from sqlalchemy.sql import func from sqlalchemy import distinct, and_ @@ -52,14 +51,25 @@ admin.add_view(UserView(UserModel, db.session, "Utilisateurs")) -admin.add_view(ProjectView(ProjectModel, db.session, "1 - Projets", category="Enquêtes")) -admin.add_view(GeometryView(GeometryModel, db.session, "2 - Zones geographiques", category="Enquêtes")) -admin.add_view(CustomFormView(CustomFormModel, db.session, "3a - Formulaires dynamiques", category="Enquêtes")) -admin.add_view(SiteTypeView(SiteTypeModel, db.session, "3b - Types de site", category="Enquêtes")) -admin.add_view(ProgramView(ProgramsModel, db.session, "4 - Programmes", category="Enquêtes")) - - - +admin.add_view( + ProjectView(ProjectModel, db.session, "1 - Projets", category="Enquêtes") +) +admin.add_view( + GeometryView( + GeometryModel, db.session, "2 - Zones geographiques", category="Enquêtes" + ) +) +admin.add_view( + CustomFormView( + CustomFormModel, db.session, "3a - Formulaires dynamiques", category="Enquêtes" + ) +) +admin.add_view( + SiteTypeView(SiteTypeModel, db.session, "3b - Types de site", category="Enquêtes") +) +admin.add_view( + ProgramView(ProgramsModel, db.session, "4 - Programmes", category="Enquêtes") +) @routes.route("/modules/", methods=["GET"]) diff --git a/data/maintenance/index.html b/data/maintenance/index.html new file mode 100644 index 00000000..71e0b659 --- /dev/null +++ b/data/maintenance/index.html @@ -0,0 +1,64 @@ + + + + + GeoNature-citizen - Site en cours de maintenance + + + + + + + + +
+

Site en cours de maintenance

+
+ + From 9132537e8864851bcc1fce0cb8b7f13a4a911915 Mon Sep 17 00:00:00 2001 From: Samuel Priou Date: Wed, 2 Jun 2021 18:03:50 +0200 Subject: [PATCH 09/66] Create Conf - champs additionnels des programmes --- docs/Conf - champs additionnels des programmes | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/Conf - champs additionnels des programmes diff --git a/docs/Conf - champs additionnels des programmes b/docs/Conf - champs additionnels des programmes new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docs/Conf - champs additionnels des programmes @@ -0,0 +1 @@ + From 81e5bb5c4561bb417ef7e9db094bcd37372f58d4 Mon Sep 17 00:00:00 2001 From: Samuel Priou Date: Wed, 2 Jun 2021 18:04:31 +0200 Subject: [PATCH 10/66] Rename Conf - champs additionnels des programmes to Configuration - champs additionnels des programmes --- ...grammes => Configuration - champs additionnels des programmes} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{Conf - champs additionnels des programmes => Configuration - champs additionnels des programmes} (100%) diff --git a/docs/Conf - champs additionnels des programmes b/docs/Configuration - champs additionnels des programmes similarity index 100% rename from docs/Conf - champs additionnels des programmes rename to docs/Configuration - champs additionnels des programmes From 9caf436e3c5667126edb31db9bf8bdfe1a100dd8 Mon Sep 17 00:00:00 2001 From: Samuel Priou Date: Wed, 2 Jun 2021 18:36:33 +0200 Subject: [PATCH 11/66] Update Configuration - champs additionnels des programmes --- docs/Configuration - champs additionnels des programmes | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Configuration - champs additionnels des programmes b/docs/Configuration - champs additionnels des programmes index 8b137891..557aebd5 100644 --- a/docs/Configuration - champs additionnels des programmes +++ b/docs/Configuration - champs additionnels des programmes @@ -1 +1,2 @@ - +Se connecter en tant qu'administrateur sur votre instance GeoNature citizen : https://mongeonaturecitizen/citizen/api/admin/ +Aller sur Enquêtes : From 19304f1c421c288fcc80c7b633914ca10c3a2dda Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Fri, 4 Jun 2021 18:50:53 +0200 Subject: [PATCH 12/66] Changelog - Preparation 0.99.4-dev --- docs/CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 841c704a..9b9d8158 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,6 +1,42 @@ CHANGELOG ========= +0.99.4-dev (unreleased) +----------------------- + +**🚀 New features** + +* Add a maintenance page +* Disallow ckeditor cleanup code in backoffice +* Review and improve installation documentation + +**🐛 Fixes** + +* Order API taxa list by French name +* Remove some local taxonomy dependencies +* Update dependencies versions from ``requirements.txt`` using: + - `poetry export --without-hashes > requirements.txt` + - `poetry export --without-hashes -D > requirements-dev.txt` + - but it's preferable to simply use `poetry install` + +0.99.3-dev (2021-02-23) +----------------------- + +**🚀 New features** + +* Best new feature: sign up is now configurable (options are : never|optional|always) (by @QuentinJouet, financed by Parc National du Mercantour | @samuelpriou ) +* Feat: backend python management with python-poetry +* Feat: improve flask-admin UI (hide columns, now use bootstrap 4) +* Various dependencies updates on both backend and frontend + +0.99.1-dev (2021-02-23) +----------------------- + +**🐛 Fixes** + +* Latest update broke site form validation when type is set by default when there is only one type site +* Some other minor updates + 0.99.0-dev (2021-02-19) ----------------------- From 5e4fdc80792ade717dfd9479b6948a226cc88116 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Fri, 4 Jun 2021 19:05:12 +0200 Subject: [PATCH 13/66] Doc install - Move TaxHub & PG manual install The documentation explained to install TaxHub and PostgreSQL, and then to launch ``install_app.sh`` which also does it. So I moved this part in the manuel installation section --- docs/installation.rst | 56 ++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/docs/installation.rst b/docs/installation.rst index 3c132d89..70642de5 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -17,7 +17,6 @@ Cette documentation suppose que vous avez les bases de l'utilisation de la ligne Dépendances ----------- - La présente documentation présente l'installation de GeoNature-citizen dans un environnement Linux Debian_ (version 9 et supérieures) et Ubuntu_ (version 18.04 et supérieures). La procédure d'installation dépend de TaxHub_, et de certains paquets, qu'il faut installer. @@ -29,20 +28,6 @@ Commencez par installer les paquets suivants : su # vous aurez besoin du mot de passe de l'utilisateur root apt install sudo git python3 python3-pip python3-venv curl unzip -y - -Ensuite : - -- installez TaxHub, si ce n'est pas déjà fait. Vous pouvez suivre la documentation officielle : https://taxhub.readthedocs.io/fr/latest/ - -- Configurer le serveur : https://taxhub.readthedocs.io/fr/latest/serveur.html#installation-et-configuration-du-serveur - -- Configurer PostgreSQL : https://taxhub.readthedocs.io/fr/latest/serveur.html#installation-et-configuration-de-posgresql - -- Configuration et installation de l’application : https://taxhub.readthedocs.io/fr/latest/installation.html - -**Notez bien les identifiants de connexion à la base de données de Taxhub, car ils seront réutilisés ici.** - - Créer un utilisateur pour l'installation ---------------------------------------- @@ -63,7 +48,6 @@ Créer un utilisateur appartenant au groupe ``sudo``. Dans cette documentation, Mettre la localisation en français ------------------------------------ - Générer les locales ``en_US.UTF8`` et ``fr_FR.UTF-8`` puis choisir ``fr_FR.UTF-8`` comme locale par default: :: @@ -93,17 +77,19 @@ Téléchargez et décompressez la dernière version de l'application, disponible # Se positionner dans le dossier par défaut de l'utilisateur (ici /home/geonatadmin) cd ~ - # Téléchargement de l'application - curl -OJL https://github.com/PnX-SI/GeoNature-citizen/archive/v0.99.0.zip + # Téléchargement de l'application (en remplaçant X.Y.Z par le numéro de version souhaité) + curl -OJL https://github.com/PnX-SI/GeoNature-citizen/archive/X.Y.Z.zip # Décompression de l'application - unzip GeoNature-citizen-0.99.0.zip + unzip GeoNature-citizen-X.Y.Z.zip # Renommage du dossier contenant l'application - mv GeoNature-citizen-0.99.0 gncitizen + mv GeoNature-citizen-X.Y.Z gncitizen Installation automatique ======================== +Le script ``install/install_app.sh`` va se charger d'installer automatiquement l'environnement, PostgreSQL, TaxHub et GeoNature-citizen, +ainsi que leur base de données et leur configuration Apache. .. tip:: @@ -113,9 +99,9 @@ Installation automatique su - nom_utilisateur (geonatadmin) - - S'assurer d'avoir le projet Geonature-citizen dans ce dossier ainsi que d'etre propriétaire du dossier et de ses dépendances + - S'assurer d'avoir le projet GeoVature-citizen dans ce dossier ainsi que d'être propriétaire du dossier et de ses dépendances - - Se rendre sur la Home de votre utilisateur + - Se rendre dans le répertoire ``home`` de votre utilisateur .. code-block:: bash @@ -148,6 +134,16 @@ Installation manuelle Si vous souhaitez à une installation manuelle, suivez les instructions suivantes. +Pré-requis +---------- + +- Installer TaxHub, si ce n'est pas déjà fait. Vous pouvez suivre la documentation officielle : https://taxhub.readthedocs.io/fr/latest/ +- Configurer le serveur : https://taxhub.readthedocs.io/fr/latest/serveur.html#installation-et-configuration-du-serveur +- Configurer PostgreSQL : https://taxhub.readthedocs.io/fr/latest/serveur.html#installation-et-configuration-de-posgresql +- Configuration et installation de l’application : https://taxhub.readthedocs.io/fr/latest/installation.html + +**Notez bien les identifiants de connexion à la base de données de Taxhub, car ils seront réutilisés ici.** + Installer les dépendances python -------------------------------- @@ -164,7 +160,7 @@ Installer les dépendances python Les warnings avec le message "`Failed building wheel`" peuvent être ignorés. Éditer le fichier de configuration ------------------------------------- +---------------------------------- Créer le fichier de configuration avec des valeurs par défaut : @@ -184,7 +180,7 @@ Et changer les valeurs pour correspondre à la réalité de votre installation. **Quelques valeurs importantes :** SQLALCHEMY_DATABASE_URI -~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~ GeoNature-citizen a pour le moment des références au schéma ``taxonomie`` de TaxHub_ (pour l'utilisation du référentiel taxonomique `TaxRef `_). Ce schéma doit donc être installé dans cette même base de données. @@ -202,7 +198,7 @@ Référez-vous donc à la configuration de TaxHub pour saisir ce paramètre. Les clés secrètes -~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~ Il y a 3 clés secrètes à changer : ``JWT_SECRET_KEY``, ``SECRET_KEY`` et ``CONFIRM_MAIL_SALT``. @@ -231,7 +227,7 @@ http://ADRESSE_IP/citizen Notez que nous suffixons avec "citizen", ce qui n'est pas obligatoire, mais nous utiliserons cette configuration pour Apache plus loin. Quelle que soit la valeur choisie, gardez-la sous la main pour cette dernière. EMAILS -~~~~~~~~~~~~~~~~~~ +~~~~~~ L'inscription à GeoNature-citizen n'est pas obligatoire pour les contributeurs. @@ -292,7 +288,7 @@ Voici un exemple de configuration avec office365 : API_ENDPOINT -~~~~~~~~~~~~~~~ +~~~~~~~~~~~~ L'URL que va utiliser GeoNature-citizen pour exposer ses données. Cette valeur doit commencer comme ``URL_APPLICATION``, mais finir par ``/api`` et utiliser le même port que définit par ``API_PORT`` (5002 par défaut, vous n'avez probablement pas besoin de le changer). @@ -303,7 +299,7 @@ http://votredomaine.com:5002/citizen/api Gardez cette valeur sous la main, nous l'utiliserons dans la configuration Apache plus loin. Authentification Mapbox -~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~ Si vous avez des identifiants Mapbox, inscrivez-les dans ``MAPBOX_MAP_ID`` et ``MAPBOX_ACCESS_TOKEN``. Ils sont utilisés pour afficher des fonds de carte dans la partie administration des programmes. @@ -312,7 +308,7 @@ Installation du backend et de la base des données Création du référentiel des géométries communales -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ On continue d'utiliser les identifiants de la BDD de TaxHub, ici avec les exemples ``referentielsdb`` et ``geonatuser``. @@ -349,7 +345,7 @@ Si les communes françaises ne sont pas déjà dans la base, les importer : psql -d referentielsdb -h localhost -p 5432 -U geonatuser -c "DROP TABLE ref_geo.temp_fr_municipalities;" Générer les schémas de GeoNature-citizen -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Il faut maintenant faire au moins une requête au serveur pour le forcer à créer les tables dont il a besoin. From a21472bbd57d2dec4eab6bde8ad2e97d98edc223 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Fri, 4 Jun 2021 19:06:06 +0200 Subject: [PATCH 14/66] Typo --- docs/installation.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/installation.rst b/docs/installation.rst index 70642de5..d7361180 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -99,7 +99,7 @@ ainsi que leur base de données et leur configuration Apache. su - nom_utilisateur (geonatadmin) - - S'assurer d'avoir le projet GeoVature-citizen dans ce dossier ainsi que d'être propriétaire du dossier et de ses dépendances + - S'assurer d'avoir le projet GeoNature-citizen dans ce dossier ainsi que d'être propriétaire du dossier et de ses dépendances - Se rendre dans le répertoire ``home`` de votre utilisateur @@ -126,7 +126,7 @@ Lancer le script d'installation : ./install/install_app.sh -Le script crééra la base de données, configurera taxhub si l'installation est demandée, configurera le serveur web Apache et installera toutes les dépendances du projet Geonature-Citizen. +Le script crééra la base de données, configurera taxhub si l'installation est demandée, configurera le serveur web Apache et installera toutes les dépendances du projet GeoNature-Citizen. Installation manuelle From 5cc54df7fa706f40d420af9b94a996ec59163250 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Fri, 4 Jun 2021 19:08:14 +0200 Subject: [PATCH 15/66] Bump version --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index c9a9c229..c2c731ab 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.99.3-dev \ No newline at end of file +0.99.4-dev From 5d53e164d4de6a32426727f5e19c16f4a6128088 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Fri, 4 Jun 2021 19:08:50 +0200 Subject: [PATCH 16/66] Bump version in package.json --- frontend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/package.json b/frontend/package.json index 2f10f0bc..34dcf59b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "frontend", - "version": "0.99.3-dev", + "version": "0.99.4-dev", "scripts": { "ng": "ng", "start": "ng serve --poll 2000", From c713e2ef4f80f62532bf1d75b275a229959477e8 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Fri, 4 Jun 2021 19:12:48 +0200 Subject: [PATCH 17/66] =?UTF-8?q?Doc=20installation=20-=20Pr=C3=A9cision?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/installation.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/installation.rst b/docs/installation.rst index d7361180..cf9694ea 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -114,7 +114,7 @@ Lancer le script d'installation : cd ~/gncitizen/ ./install/install_app.sh -- Le script créera un fichier de config settings.ini, il faut alors le compléter avec les informations de votre installation. +- Au premier lancement, le script créera un fichier de config ``settings.ini``, il faut alors le compléter avec les informations de votre installation. .. code-block:: bash @@ -126,7 +126,7 @@ Lancer le script d'installation : ./install/install_app.sh -Le script crééra la base de données, configurera taxhub si l'installation est demandée, configurera le serveur web Apache et installera toutes les dépendances du projet GeoNature-Citizen. +Le script crééra la base de données, configurera TaxHub si l'installation est demandée, configurera le serveur web Apache et installera toutes les dépendances du projet GeoNature-citizen. Installation manuelle From 380e0114d05fd94f065668d56e080dcf51023da3 Mon Sep 17 00:00:00 2001 From: "Rhandy (DiD)" Date: Thu, 17 Jun 2021 13:32:55 +0200 Subject: [PATCH 18/66] feat(register): add hcaptcha script on register component construction if HCAPTCHA_SITE_KEY is set --- .../app/auth/register/register.component.ts | 21 +++++++++++++++---- frontend/src/conf/app.config.ts.template | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/auth/register/register.component.ts b/frontend/src/app/auth/register/register.component.ts index 9b7bfaae..a741c4d7 100644 --- a/frontend/src/app/auth/register/register.component.ts +++ b/frontend/src/app/auth/register/register.component.ts @@ -29,7 +29,9 @@ export class RegisterComponent { private auth: AuthService, private router: Router, public activeModal: NgbActiveModal - ) {} + ) { + this.loadCaptchaScript(localeId); + } onRegister(): void { this.auth @@ -37,7 +39,7 @@ export class RegisterComponent { .pipe( map((user) => { if (user) { - let message = user.message; + const message = user.message; this._success.subscribe( (message) => (this.successMessage = message) ); @@ -96,8 +98,8 @@ export class RegisterComponent { onUploadAvatar($event) { if ($event) { if ($event.target.files && $event.target.files[0]) { - let reader = new FileReader(); - let file = $event.target.files[0]; + const reader = new FileReader(); + const file = $event.target.files[0]; reader.readAsDataURL(file); reader.onload = () => { this.userAvatar = reader.result; @@ -109,4 +111,15 @@ export class RegisterComponent { } } } + + loadCaptchaScript(locale) { + if (!AppConfig.HCAPTCHA_SITE_KEY) { + return; + } + const node = document.createElement('script'); + node.src = 'https://hcaptcha.com/1/api.js?hl=' + locale; + node.type = 'text/javascript'; + node.async = true; + document.getElementsByTagName('head')[0].appendChild(node); + } } diff --git a/frontend/src/conf/app.config.ts.template b/frontend/src/conf/app.config.ts.template index af0708ff..9cbebf24 100644 --- a/frontend/src/conf/app.config.ts.template +++ b/frontend/src/conf/app.config.ts.template @@ -2,6 +2,7 @@ export const AppConfig = { appName: "GeoNature-citizen", API_ENDPOINT:"http://localhost:5002/api", API_TAXHUB:"http://localhost:5000/api", + HCAPTCHA_SITE_KEY: null, FRONTEND:{ PROD_MOD:true, MULTILINGUAL:false, From c8498b84d97b988e1f7e694e0f6d3cd0a55cb401 Mon Sep 17 00:00:00 2001 From: "Rhandy (DiD)" Date: Thu, 17 Jun 2021 13:33:36 +0200 Subject: [PATCH 19/66] feat(register): add hcaptcha html tag in register component if HCAPTCHA_SITE_KEY is set --- frontend/src/app/auth/register/register.component.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/app/auth/register/register.component.html b/frontend/src/app/auth/register/register.component.html index 84abb3af..3d02826d 100644 --- a/frontend/src/app/auth/register/register.component.html +++ b/frontend/src/app/auth/register/register.component.html @@ -219,6 +219,11 @@

Créez votre compte

> +
+
+
+
+