PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
100 stars 102 forks source link

gn_module_ZH vs "migration 2.9.2 > 2.10.4" : impossible #2240

Closed cen-cgeier closed 1 year ago

cen-cgeier commented 1 year ago

Bonjour et belle année à tous ! Il y a plusieurs semaines, j'ai installé le module gn_module_ZH et j'ai transféré mon ancienne bdd dedans. Je tente aujourd'hui de migrer mon géonature, de la version 2.9.2 vers 2.10.4

Version Version de GeoNature affectée par le bug. 2.9.2 > 2.10.4

Manipulation préalable Dans le dossier gn_module_ZH/backend, modifier les fichiers blueprint.py, forms.py, search.py, cards.py, zh_schema.py : from geonature.core.ref_geo.models devient from ref_geo.models

Cas n°1 : désactivation préalable de gn_module_ZH J'ai tout d'abord désactiver le module gn_module_ZH avant d'effectuer la migration. La migration se déroule bien mais la compilation engendre une erreure

...
Compiling ng2-nouislider : es2015 as esm2015
✔ Browser application bundle generation complete.

Warning: /home/geonatureadmin/geonature/frontend/src/app/app.module.ts depends on 'angular2-chartjs'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

Warning: /home/geonatureadmin/geonature/frontend/src/app/app.module.ts depends on 'ng2-cookies'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

Warning: /home/geonatureadmin/geonature/frontend/src/app/metadataModule/services/metadata-search-form.service.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig.

Warning: /home/geonatureadmin/geonature/frontend/src/app/syntheseModule/services/form.service.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig.

Warning: /home/geonatureadmin/geonature/frontend/src/app/syntheseModule/services/store.service.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig.

Warning: /home/geonatureadmin/geonature/frontend/src/app/syntheseModule/synthese-results/synthese-list/synthese-info-obs/modal-info-obs.component.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig.

Warning: /home/geonatureadmin/geonature/frontend/src/environments/environment.prod.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig.

../external_modules/zones_humides/frontend/app/gnModule.module.ts - Error: Module build failed (from ./node_modules/@ngtools/webpack/src/ivy/index.js):
Error: /home/geonatureadmin/geonature/external_modules/zones_humides/frontend/app/gnModule.module.ts is missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.
    at /home/geonatureadmin/geonature/frontend/node_modules/@ngtools/webpack/src/ivy/loader.js:59:26

Migration terminée

Cas n°2 : Réactivation de gn_module_ZH J'ai alors tenté de réactiver le module et de mettre à jour la configuration à l'aide des commandes suivantes :

geonature activate-gn-module zones_humides
geonature generate-frontend-config
geonature generate-frontend-tsconfig
geonature generate-frontend-tsconfig-app
geonature update-configuration

J'obtiens alors une erreur de dépendance Javascript sur la librairie angular2-multiselect-dropdown

> geonature@0.0.0 build
> ng build --aot=false --build-optimizer=false --configuration production

Warning: Support was requested for IE 11 in the project's browserslist configuration. IE 11 support is deprecated since Angular v12.
For more information, see https://angular.io/guide/browser-support
⠋ Generating browser application bundles (phase: setup)...Compiling @angular/material/radio : es2015 as esm2015

Compiling ng-multiselect-dropdown : es2015 as esm2015

An error occurred during the build:
Error: The target entry-point "angular2-multiselect-dropdown" has missing dependencies:
 - rxjs
 - rxjs/operators

    at TargetedEntryPointFinder.findEntryPoints (/home/geonatureadmin/geonature/frontend/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/targeted_entry_point_finder.js:40:23)
    at /home/geonatureadmin/geonature/frontend/node_modules/@angular/compiler-cli/ngcc/src/execution/analyze_entry_points.js:29:41
    at SingleProcessExecutorSync.SingleProcessorExecutorBase.doExecute (/home/geonatureadmin/geonature/frontend/node_modules/@angular/compiler-cli/ngcc/src/execution/single_process_executor.js:28:29)
    at /home/geonatureadmin/geonature/frontend/node_modules/@angular/compiler-cli/ngcc/src/execution/single_process_executor.js:57:59
    at SyncLocker.lock (/home/geonatureadmin/geonature/frontend/node_modules/@angular/compiler-cli/ngcc/src/locking/sync_locker.js:34:24)
    at SingleProcessExecutorSync.execute (/home/geonatureadmin/geonature/frontend/node_modules/@angular/compiler-cli/ngcc/src/execution/single_process_executor.js:57:27)
    at Object.mainNgcc (/home/geonatureadmin/geonature/frontend/node_modules/@angular/compiler-cli/ngcc/src/main.js:74:25)
    at Object.process (/home/geonatureadmin/geonature/frontend/node_modules/@angular/compiler-cli/ngcc/index.js:29:23)
    at NgccProcessor.processModule (/home/geonatureadmin/geonature/frontend/node_modules/@ngtools/webpack/src/ngcc_processor.js:175:16)
    at /home/geonatureadmin/geonature/frontend/node_modules/@ngtools/webpack/src/ivy/host.js:146:18
An unhandled exception occurred: The target entry-point "angular2-multiselect-dropdown" has missing dependencies:
 - rxjs
 - rxjs/operators

See "/tmp/ng-89sV94/angular-errors.log" for further details.
Traceback (most recent call last):
  File "/home/geonatureadmin/geonature/backend/venv/bin/geonature", line 8, in <module>
    sys.exit(main())
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/flask/cli.py", line 357, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/geonature/core/command/main.py", line 109, in update_configuration
    subprocess.run(
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/bin/bash', '-i', '-c', 'nvm use && npm run build']' returned non-zero exit status 127.

J'ai alors tenté d'installer la librairie manquante à l'aide des commandes suivantes :

cd ~/
cd gn_module_ZH/frontend/
npm install rxjs
cd 
source /home/`whoami`/geonature/backend/venv/bin/activate
geonature update-configuration

J'obtiens alors un autre message d'erreur :

> geonature@0.0.0 build
> ng build --aot=false --build-optimizer=false --configuration production

Warning: Support was requested for IE 11 in the project's browserslist configuration. IE 11 support is deprecated since Angular v12.
For more information, see https://angular.io/guide/browser-support
⠋ Generating browser application bundles (phase: setup)...
Compiling angular2-multiselect-dropdown : es2015 as esm2015
✔ Browser application bundle generation complete.

Warning: /home/geonatureadmin/geonature/external_modules/zones_humides/frontend/app/services/pbf.service.ts depends on 'pbf'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

Warning: /home/geonatureadmin/geonature/frontend/src/app/app.module.ts depends on 'angular2-chartjs'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

Warning: /home/geonatureadmin/geonature/frontend/src/app/app.module.ts depends on 'ng2-cookies'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

../external_modules/zones_humides/frontend/app/services/files.service.ts:5:0-36 - Error: Module not found: Error: Can't resolve 'file-saver' in '/home/geonatureadmin/geonature/external_modules/zones_humides/frontend/app/services'

../external_modules/zones_humides/frontend/app/zh-map-list/zh-map-list.component.scss - Error: Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: expected selector.
   ╷
18 │ :host /deep/ .trash-btn{
   │       ^
   ╵
  ../external_modules/zones_humides/frontend/app/zh-map-list/zh-map-list.component.scss 18:7  root stylesheet

Error: ../external_modules/zones_humides/frontend/app/gnModule.module.ts:60:15 - error TS2339: Property 'forRoot' does not exist on type 'typeof NgbModule'.

60     NgbModule.forRoot(),
                 ~~~~~~~

Error: ../external_modules/zones_humides/frontend/app/services/datepicker-i18n.service.ts:22:14 - error TS2515: Non-abstract class 'DatepickerI18n' does not implement inherited abstract member 'getWeekdayLabel' from class 'NgbDatepickerI18n'.

22 export class DatepickerI18n extends NgbDatepickerI18n {
                ~~~~~~~~~~~~~~

Error: ../external_modules/zones_humides/frontend/app/services/files.service.ts:4:24 - error TS2307: Cannot find module 'file-saver' or its corresponding type declarations.

4 import { saveAs } from "file-saver";
                         ~~~~~~~~~~~~

Error: ../external_modules/zones_humides/frontend/app/zh-forms/tabs/zh-tabs.component.ts:4:10 - error TS2305: Module '"@angular/material"' has no exported member 'MatTabGroup'.

4 import { MatTabGroup } from "@angular/material";
           ~~~~~~~~~~~

Traceback (most recent call last):
  File "/home/geonatureadmin/geonature/backend/venv/bin/geonature", line 8, in <module>
    sys.exit(main())
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/flask/cli.py", line 357, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/geonature/core/command/main.py", line 109, in update_configuration
    subprocess.run(
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/bin/bash', '-i', '-c', 'nvm use && npm run build']' returned non-zero exit status 1.

Là je coince un peu ... et si j'en comprends un peu la finalité je dois faire un choix .. ;-( Qu'en pensez-vous ? N'est-il pas possible de monter en version GéoNature sans devoir désinstaller le module gn_module_ZH ?

camillemonchicourt commented 1 year ago

C'est normal que GeoNature ne fonctionne pas avec le module Zones Humides car celui-ci n'a pas encore mis à niveau pour être compatible avec GeoNature 2.10.

C'est indiqué dans les notes de versions du module (Compatible avec les versions 2.9.1 et 2.9.2 de GeoNature) qui est encore très récent et en brouillon, sans release officielle : https://github.com/PnX-SI/gn_module_ZH/releases

La version 2.10 de GeoNature fait notamment le passage d'Angular version 7 à 12 qui doit être répercuté dans les différents modules.

C'est indiqué au tout début des notes de version de la version 2.10 de GeoNature :

Passage de la version 7 à 12 d'Angular. Avant de mettre à jour GeoNature sur cette version, vérifiez que les modules que vous utilisez sont disponibles dans une version compatible avec GeoNature 2.10.0 ou plus (compatibilité Angular 12).

Modules compatibles à date de la publication de la version 2.10 de GeoNature :

  • Import
  • Export
  • Dashboard
  • Monitoring

Voir aussi : https://github.com/PnX-SI/gn_module_ZH/issues/7

Par contre, il doit être possible de désactiver le module ZH et de passer en version 2.10 (ou 2.11) et d'avoir son GeoNature qui tourne, sans désinstaller le module, en attendant de le mettre à jour quand une version compatible 2.10 ou 2.11 sera sortie.

On va regarder ça.

PS : Si vous mettez à jour votre GeoNature depuis une version 2.9, autant passer directement à la version 2.11 qui apporte pas mal d'autres améliorations et corrections et est bien plus simple à faire la mise à jour.

bouttier commented 1 year ago

Bonjour,

Pour désactiver le module ZH en attendant une version compatible avec GeoNature 2.10 / 2.11, il faut :

cen-cgeier commented 1 year ago

Merci Camille pour votre retour. J'avais noté ce problème de version, c'est pourquoi j'avais désactivé le module. La désactivation ayant engendrée une erreur, j'avais un infime espoir que ça passe en réactivant le module (Les belles lueurs de la nouvelle année :) ).

J'étais pas sûr de pouvoir passer de la 2.9.2 à la 2.11 directement. Ca m'a fait peur et j'ai voulu faire une étape intermédiaire avec la 2.10.

Je vais suivre vos précieux conseils et re-tenter demain ! Merci !

camillemonchicourt commented 1 year ago

OK tiens nous au courant. Avec la procédure donnée par @bouttier, tu peux désactiver le module, donc ça devrait être bon.

cen-cgeier commented 1 year ago

Bonjour, En suivant vos conseils, voici la procédure que j'ai suivi: 2.9.2 > 2.11.0

source /home/`whoami`/geonature/backend/venv/bin/activate
geonature deactivate-gn-module zones_humides
geonature update-configuration
deactivate
sudo systemctl restart geonature
...
# Mise à jour TaxHub==1.10.7 et UsersHub==2.3.2
# Téléchargement des nouvelles versions des modules (Dashboard, Export, Import, Monitoring)
...
# Edition du fichier geonature_config.toml
nano geonature/config/geonature_config.toml
# Suppression du paramètre 
`LOCAL_SRID`
# Ajout du paramètre :
DISABLED_MODULES = [
  "ZONES_HUMIDES",
]
#Suppression du lien symbolique zones_humides
rm geonature/external_modules/zones_humides

# Installation de GéoNature 2.11
rm -R ./geonature_old
VERSION=2.11.0
wget https://github.com/PnX-SI/GeoNature/archive/$VERSION.zip
unzip $VERSION.zip
rm $VERSION.zip
## Vérifier que l'on n'a pas déjà un dossier geonature_old
mv geonature geonature_old
mv GeoNature-$VERSION/ geonature/
cd geonature/
sudo apt install redis
./install/migration/migration.sh 

La migration se déroule sans problème jusqu'à la mise à jour de la base de données :

Rebuild du frontend terminé.
Mise à jour de la base de données…
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
ERROR [flask_migrate] Error: Requested revision cce08a64eb4f overlaps with other requested revisions 944072911ff7
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
ERROR [flask_migrate] Error: Requested revision cce08a64eb4f overlaps with other requested revisions 944072911ff7
Mise-à-jour du module MONITORINGS…
Traceback (most recent call last):
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedColumn: ERREUR:  la colonne t_modules.ng_module n'existe pas
LINE 1: ...odule_order AS gn_commons_t_modules_module_order, gn_commons...
                                                             ^
HINT:  Peut-être que vous souhaitiez référencer la colonne « t_modules.id_module ».

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/geonatureadmin/geonature/backend/venv/bin/geonature", line 8, in <module>
    sys.exit(main())
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/flask/cli.py", line 357, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/geonature/core/command/create_gn_module.py", line 85, in upgrade_modules_db
    module_db_upgrade(module_dist)
  File "/home/geonatureadmin/geonature/backend/geonature/utils/module.py", line 47, in module_db_upgrade
    module = TModules.query.filter_by(module_code=module_code).one_or_none()
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3459, in one_or_none
    ret = list(self)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3535, in __iter__
    return self._execute_and_instances(context)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3560, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
    return meth(self, multiparams, params)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
    ret = self._execute_context(
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
    self._handle_dbapi_exception(
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) ERREUR:  la colonne t_modules.ng_module n'existe pas
LINE 1: ...odule_order AS gn_commons_t_modules_module_order, gn_commons...
                                                             ^
HINT:  Peut-être que vous souhaitiez référencer la colonne « t_modules.id_module ».

[SQL: SELECT gn_commons.t_modules.type AS gn_commons_t_modules_type, gn_commons.t_modules.id_module AS gn_commons_t_modules_id_module, gn_commons.t_modules.module_code AS gn_commons_t_modules_module_code, gn_commons.t_modules.module_label AS gn_commons_t_modules_module_label, gn_commons.t_modules.module_picto AS gn_commons_t_modules_module_picto, gn_commons.t_modules.module_desc AS gn_commons_t_modules_module_desc, gn_commons.t_modules.module_group AS gn_commons_t_modules_module_group, gn_commons.t_modules.module_path AS gn_commons_t_modules_module_path, gn_commons.t_modules.module_external_url AS gn_commons_t_modules_module_external_url, gn_commons.t_modules.module_target AS gn_commons_t_modules_module_target, gn_commons.t_modules.module_comment AS gn_commons_t_modules_module_comment, gn_commons.t_modules.active_frontend AS gn_commons_t_modules_active_frontend, gn_commons.t_modules.active_backend AS gn_commons_t_modules_active_backend, gn_commons.t_modules.module_doc_url AS gn_commons_t_modules_module_doc_url, gn_commons.t_modules.module_order AS gn_commons_t_modules_module_order, gn_commons.t_modules.ng_module AS gn_commons_t_modules_ng_module, gn_commons.t_modules.meta_create_date AS gn_commons_t_modules_meta_create_date, gn_commons.t_modules.meta_update_date AS gn_commons_t_modules_meta_update_date 
FROM gn_commons.t_modules 
WHERE gn_commons.t_modules.module_code = %(module_code_1)s]
[parameters: {'module_code_1': 'MONITORINGS'}]
(Background on this error at: http://sqlalche.me/e/13/f405)
Redémarrage des services…
Migration terminée

Le recouvrement de [occtax-samples ✓] cce08a64eb4f avec [occtax ×] 944072911ff7 m'empêche d’accéder à la commande geonature db status.

La commande `geonature db heads` renvoie
3d0bf4ee67d1 (geonature-samples) (effective head)
4cf3fd5d06f5 (geonature) (head)
87651375c2e8 (ign_bd_alti_vector) (head)
1715cf31a75d (ign_bd_alti) (effective head)
7dfd0a813f86 (ref_sensitivity_inpn) (head)
6ec215fe023e (usershub) (head)
f63a8f44c969 (usershub-samples) (head)
ba207b468e31 (sql_utils) (head)
64d38dbe7739 (taxhub) (head)
3fe8c07741be (taxhub-admin) (head)
f2c36312b3de (taxonomie) (head)
72f227e37bdf (utilisateurs-samples) (effective head)
112ccf1024ce (utilisateurs) (head)
f5436084bf17 (nomenclatures_taxonomie) (effective head)
ee1146f6c0f4 (nomenclatures_inpn_data) (head)
b820c66d8daa (nomenclatures) (head)
a763fb554ff2 (nomenclatures_taxonomie_data) (head)
d02f4563bebe (ref_geo_fr_regions) (effective head)
05a0ae652c13 (ref_geo_fr_regions_1970) (effective head)
f7374cd6e38d (ref_geo) (head)
0dfdbfbccd63 (ref_geo_fr_municipalities) (head)
ede150d9afd9 (ref_geo_inpn_grids_10) (head)
586613e2faeb (ref_geo_inpn_grids_1) (head)
3fdaa1805575 (ref_geo_fr_departments) (effective head)
7d6e98441e4c (ref_geo_inpn_grids_5) (head)
805442837a68 (habitats_inpn_data) (head)
62e63cd6135d (habitats) (effective head)
2003e18f248a (monitorings) (head)
a11c9a2db7bb (import) (head)
3bd3234cab96 (dashboard) (head)
c2d02e345a06 (exports) (head)
21f661247023 (occhab-samples) (head)
2984569d5df6 (occhab) (effective head)
2a0ab7644e1c (occtax-samples-test) (head)
4c97453a2d1a (occtax) (head)
cce08a64eb4f (occtax-samples) (head)
camillemonchicourt commented 1 year ago

Cela a été fait depuis quelle version ? 2.9.2 ou 2.10.4 ?

Le soucis remonté semble similaire à https://github.com/PnX-SI/GeoNature/issues/2227 et https://github.com/PnX-SI/GeoNature/issues/2178

C'est bizarre qu'il y ait encore ce soucis, car l'ordre des migrations a été revu et fixé entre temps.

Il faut qu'on regarde de plus prêt.

cen-cgeier commented 1 year ago

Je l'ai fait depuis la version 2.9.2 comme tu me l'as suggéré. Effectivement, une partie du message d'erreur semble très similaire mais les solutions proposées n'ont pas fonctionné.

cen-cgeier commented 1 year ago

J'avais le sentiment que le problème vient la migration alembic 944072911ff7 mal positionné. Je l'ai supprimé et réintégré après la commande de migration, puis j'ai réalisé un autoupgrade de la base :

geonature db exec "delete from public.alembic_version where version_num in ('944072911ff7')"
geonature db stamp 944072911ff7
geonature db stamp 2628978e1016
geonature db stamp c2d02e345a06
geonature db stamp 4b137deaf201
geonature db autoupgrade

Voici ce que renvoie la commande geonature db status :

[dashboard ✓]
  [x] ┰ 2628978e1016 Add dashboard schema
  [x] ┸ 3bd3234cab96 add missing index
[exports ✓]
  [x] ─ c2d02e345a06 create export schema
[geonature ✓]
  [x] ┰ f06cc80cc8ba geonature schemas 2.7.5
  [x] ┃ c0fdf2ee7f4f auto update cor_area_synthese
  [x] ┃ 7077aa76da3d bump dependencies
  [x] ┃ 2a2e5c519fd1 fix gn_synthese.get_default_nomenclature_value
  [x] ┃ 5f4c4b644844 delete cascade on  cor_dataset_territory and cor_dataset_protocol
  [x] ┃ 2aa558b1be3a add schema gn_profiles
  [x] ┃ 1eb624249f2b add default value in additionalFields bib
  [x] ┃ 7471f51011c8 change index_vm_valid_profiles_cd_ref to unique index
  [x] ┃ 6f7d5549d49e delete view v_synthese_validation_forwebapp
  [x] ┣┓ dde31e76ce45 remove old profile function
  [x]  ┃ 61e46813d621 Update synthese sensitivity
  [x]  ┃ dfec5f64ac73 Fix sensitivity algorithm
  [x]  ┃ ac08dcf3f27b Do not auto-compute diffusion_level
  [x] ┃ 30edd97ae582 Remove gn_export.t_config_exports
  [x] ┣┛ 1dbc45309d6e Merge sensitivity
  [x] ┃ ca052245c6ec remove local srid
  [x] ┃ 095da7bc6667 add table gn_synthese.bib_reports_types
  [x] ┃ 829a376daa52 add table gn_synthese.t_reports
  [x] ┃ ca0fe5d21ea2 remove v_synthese_decode_nomenclatures
  [x] ┃ 74908bad752e add_altitude_calculation_in_t_base_site
  [x] ┃ 77a3bc6628d2 additional fields: add datalist widget
  [x] ┃ d80835fb13c8 Remove gn_sensitivity.cor_sensitivity_synthese
  [x] ┃ 6070edb31013 Set constraint check_cor_af_territory NOT VALID
  [x] ┃ f4ffdc68072c add id_module in t_sources
  [x] ┃ 8d90ab5e686d Add profiles default parameters
  [x] ┃ 07f10bbb4f3b add mobile app settings url
  [x] ┃ 42040535a20e add ng_module column in t_modules
  [x] ┃ 4b5478df71cb Update synthese sensitivity, including previously NULL rows
  [x] ┃ 2d7edda45dd4 set cascade on FK referencing sensitivity rules
  [x] ┃ 36d0bd313a47 add notification schema, tables and data
  [x] ┸ 4cf3fd5d06f5 set not-null on synthese.id_source
[geonature-samples]
  [ ] ─ 3d0bf4ee67d1 geonature samples
[habitats ✓]
  [x] ─ 62e63cd6135d create ref_habitats schema
[habitats_inpn_data ✓]
  [x] ┰ 46e91e738845 insert inpn data in ref_habitats schema
  [x] ┸ 805442837a68 correction on habref data
[ign_bd_alti ✓]
  [x] ─ 1715cf31a75d Insert default French DEM (IGN 250m BD alti)
[ign_bd_alti_vector]
  [ ] ─ 87651375c2e8 Vectorize French DEM
[import ✓]
  [x] ┰ 4b137deaf201 create_import_schema
  [x] ┃ 3a65de65b697 Refactoring of database structure
  [x] ┃ 2ed6a7ee5250 Add two columns
  [x] ┃ 75f0f9906bf1 add_columns
  [x] ┃ bf80cb5679be remove step field
  [x] ┃ 6470a2141c83 mappings
  [x] ┃ 906231e8f8e0 remove temporary tables
  [x] ┃ 0e4f9da0e33f remove in_error column
  [x] ┃ 61e11414f177 add detected separator
  [x] ┃ 74058f69828a remove t_imports.is_finished
  [x] ┃ eb217f32d7d7 add id_area_attachment
  [x] ┃ 681062ef2939 add date error
  [x] ┃ 699c25251384 Update fields and themes
  [x] ┃ 627b7968a55b date min/max too low
  [x] ┃ cadfdaa42430 add task_uuid
  [x] ┃ 6f60b0b934b1 erroneous rows
  [x] ┃ 0ff8fc0b4233 remove_archive_schema
  [x] ┃ 5c31e356cedc add loaded column
  [x] ┃ f394a5edcb56 on delete source set null
  [x] ┃ 65defbe5027b set id_module on import sources
  [x] ┸ a11c9a2db7bb set import module type
[monitorings]
  [ ] ┰ 362cf9d504ec create_monitoring_schema
  [ ] ┸ 2003e18f248a Add type to gn_modules
[nomenclatures ✓]
  [x] ┰ 6015397d686a create ref_nomenclature schema 1.3.9
  [x] ┃ 11e7741319fd fix ref_nomenclatures.get_default_nomenclature_value
  [x] ┃ f8c2c8482419 fix ref_nomenclatures.get_default_nomenclature_value
  [x] ┸ b820c66d8daa fix ref_nomenclatures.get_nomenclature_label
[nomenclatures_inpn_data ✓]
  [x] ┰ 96a713739fdd insert inpn data in ref_nomenclatures
  [x] ┃ 618542880d1f fix typo in nomenclature type definition
  [x] ┸ ee1146f6c0f4 Add UICN Red List
[nomenclatures_taxonomie ✓]
  [x] ─ f5436084bf17 add support for taxonomy into ref_nomenclatures
[nomenclatures_taxonomie_data]
  [ ] ─ a763fb554ff2 insert taxonomic filtering data in ref_nomenclatures.cor_taxref_nomenclatures
[occhab ✓]
  [x] ─ 2984569d5df6 create occhab schema
[occhab-samples ✓]
  [x] ─ 21f661247023 insert occhab sample data
[occtax ✓]
  [x] ┰ 29c199e07eaa create occtax schema
  [x] ┃ addb71d8efad create occtax export view
  [x] ┃ f57107d2d0ad fix get_default_nomenclature_value
  [x] ┃ 494cb2245a43 trigger comportement
  [x] ┃ 944072911ff7 update synthese data (bug occtax trigger)
  [x] ┃ 22c2851bc387 add database default value
  [x] ┃ 023b0be41829 add id_module in pr_occtax.t_releves
  [x] ┃ c26c770b00ae fix occtax trigger additionnal data + trigger occ
  [x] ┃ 9624348fea40 restore occtax missing counting
  [x] ┃ 576cbd26b012 default value for id_nomenclature_observations_status
  [x] ┃ 61802a0f83b8 Fix OccTax triggers to synthese
  [x] ┃ df088920b2f3 set not null on t_releves_occtax.id_module
  [x] ┸ 4c97453a2d1a add missing id module in t_sources
[occtax-samples]
  [ ] ─ cce08a64eb4f insert occtax sample data
[occtax-samples-test]
  [ ] ─ 2a0ab7644e1c occtax sample test
[ref_geo ✓]
  [x] ┰ 6afe74833ed0 ref_geo schema
  [x] ┃ e0ac4c9f5c0a add indexes on FK referencing l_areas.id_area
  [x] ┃ 4882d6141a41 add regions in area types
  [x] ┃ 681306b27407 fix altitude trigger
  [x] ┃ cb038e76d59c fix functions local srid
  [x] ┸ f7374cd6e38d add linears
[ref_geo_fr_departments ✓]
  [x] ─ 3fdaa1805575 Insert French departments in ref_geo
[ref_geo_fr_municipalities ✓]
  [x] ─ 0dfdbfbccd63 Insert French municipalities in ref_geo
[ref_geo_fr_regions ✓]
  [x] ─ d02f4563bebe Insert French regions in ref_geo
[ref_geo_fr_regions_1970 ✓]
  [x] ─ 05a0ae652c13 Insert French regions 1970-2016 in ref_geo
[ref_geo_inpn_grids_1 ✓]
  [x] ─ 586613e2faeb Insert INPN 1×1 grids in ref_geo
[ref_geo_inpn_grids_10 ✓]
  [x] ─ ede150d9afd9 Insert INPN 10×10 grids in ref_geo
[ref_geo_inpn_grids_5 ✓]
  [x] ─ 7d6e98441e4c Insert INPN 5×5 grids in ref_geo
[ref_sensitivity_inpn ✓]
  [x] ─ 7dfd0a813f86 Insert INPN rules in sensitivity referential
[sql_utils ✓]
  [x] ┰ 3842a6d800a0 Add public shared functions
  [x] ┸ ba207b468e31 create fr_numeric collation
[taxhub ✓]
  [x] ┰ fa5a90853c45 taxhub
  [x] ┸ 64d38dbe7739 taxonomie
[taxhub-admin ✓]
  [x] ─ 3fe8c07741be taxhub
[taxonomie ✓]
  [x] ┰ 9c2c0254aadc create taxonomie schema version 1.8.1
  [x] ┃ 7540702c6407 cd_ref utility functions
  [x] ┃ 98035939bc0d find_all_taxons_parents
  [x] ┃ c93cbb35cfe4 set default value for id_liste
  [x] ┃ 4fb7e197d241 create taxonomie.v_bdc_status view
  [x] ┃ d768a5da908c add bdc_status indexes
  [x] ┃ 4a549132d156 Add unique constraints
  [x] ┃ c4415009f164 Taxref v15 db structure
  [x] ┃ 1b1a3f5cd107 Add table to link bdc_status and ref_geo
  [x] ┸ f2c36312b3de fix vm_taxref_for_autocomplete
[usershub ✓]
  [x] ┰ 9445a69f2bed UsersHub
  [x] ┸ 6ec215fe023e upgrade utilisateurs schema
[usershub-samples ✓]
  [x] ─ f63a8f44c969 UsersHub samples data
[utilisateurs ✓]
  [x] ┰ fa35dfe5ff27 utilisateurs schema 1.4.7 (usershub 2.1.3)
  [x] ┃ 830cc8f4daef add additional_data field to bib_organismes
  [x] ┃ 5b334b77f5f5 fix v_roleslist_forall_applications
  [x] ┃ 951b8270a1cf add unique constraint on bib_organismes.uuid_organisme
  [x] ┃ 10e87bc144cd get_id_role_by_name()
  [x] ┸ 112ccf1024ce add unique constraint on t_roles UUID
[utilisateurs-samples ✓]
  [x] ─ 72f227e37bdf utilisateurs sample data

Bilan, plus de message d'erreur ! En revanche, les branches :

ne sont pas cochés. J'en comprends qu'elles n'ont pas été traités et/ou qu'elles ne sont pas à jour. Ca signifie que je dois exécuter geonature db upgrade XXXXX@head pour chacune d'elle ?

camillemonchicourt commented 1 year ago

87651375c2e8 Vectorize French DEM est une option quand on installe GeoNature permettant de vectoriser le MNT plutôt que de l'avoir en raster. Mais pas forcément conseillé car ça alourdit la taille de la BDD et les gains de performance sont discutables.

a763fb554ff2 insert taxonomic filtering data in ref_nomenclatures.cor_taxref_nomenclatures c'est une migration Alembic ici - https://github.com/PnX-SI/Nomenclature-api-module/blob/master/src/pypnnomenclature/migrations/versions/a763fb554ff2_nomenclatures_taxonomie_data.py. Elle permt d'éxecuter le script https://github.com/PnX-SI/Nomenclature-api-module/blob/master/src/pypnnomenclature/migrations/data/nomenclatures_taxonomie_data.sql qui fait le lien entre les nomenclatures et les taxons. Tu as forcément ce script qui a été exécuté lors de l'installation initiale de GeoNature, donc il faut que l'on regarde pourquoi elle n'est pas cochée. Je vois que c'est le cas pour les autres aussi. Mais il n'y a pas de raison que tu fasses quoique ce soit par rapport à cette migration. On va analyser ça de notre côté.

Pour Monitoring, je pense que les migrations seront cochées un fois que tu auras mis à jour le module en version 0.4.0 et suivi ses notes de version avec les commandes Alembic indiquées (https://github.com/PnX-SI/gn_module_monitoring/releases).

Donc, non tout semble OK de ton côté.

On va donc regarder pourquoi il y a toujours un soucis d'ordre des migrations au niveau de Occtax et de l'ajout de la colonne t_modules.ng_module. Et pourquoi la migration a763fb554ff2 est indiquée comme non passée.

camillemonchicourt commented 1 year ago

Le soucis d'ordre des migrations d'Occtax qui entraînait l'erreur ERROR [flask_migrate] Error: Requested revision cce08a64eb4f overlaps with other requested revisions 944072911ff7 quand on passait directement de la version 2.9 à 2.11 a été identifié et corrigé (https://github.com/PnX-SI/GeoNature/pull/2277) et publié dans la version 2.11.1.

Le fait que la migration a763fb554ff2 (insert taxonomic filtering data in ref_nomenclatures.cor_taxref_nomenclatures) est indiquée comme non exécutée est normal. C'est lié au fait que l'on ne gère plus l'insertion des données de Taxref avec Alembic mais avec des commandes dédiées. En effet, on a identifié qu'Alembic était adapté à la gestion de la structure d'une BDD et de ses évolutions, mais beaucoup moins à la gestion des contenus comme les référentiels.