Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ Documentation : https://geonature-citizen.readthedocs.io
- https://observation.lehavre.fr
- https://enquetes.cbiodiv.org
- https://jobservemonparc.fr
- https://obs.parc-livradois-forez.org
- https://citizen.parc-naturel-pilat.fr
- https://observatoire-biodiversite.parcdesbauges.com

## Solutions logicielles

Expand Down
28 changes: 15 additions & 13 deletions backend/gncitizen/core/observations/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,13 @@
from gncitizen.utils.jwt import get_id_role_if_exists, get_user_if_exists
from gncitizen.utils.mail_check import send_user_email
from gncitizen.utils.media import save_upload_files
from gncitizen.utils.taxonomy import get_taxa_by_cd_nom, taxhub_rest_get_taxon_list, set_taxa_info_from_taxhub
from gncitizen.utils.taxonomy import (
get_taxa_by_cd_nom,
taxhub_rest_get_taxon_list,
set_taxa_info_from_taxhub,
)
from server import db
from shapely.geometry import Point, shape
from shapely.geometry import shape
from sqlalchemy import desc
from utils_flask_sqla.response import json_resp

Expand Down Expand Up @@ -242,16 +246,16 @@ def post_observation():
newobs.id_observation,
ObservationMediaModel,
)
current_app.logger.debug(
"[post_observation] ObsTax UPLOAD FILE {}".format(file)
current_app.logger.debug("[post_observation] ObsTax UPLOAD FILE {}".format(file))
newobs = (
db.session.query(ObservationModel)
.options(db.joinedload(ObservationModel.medias))
.get(newobs.id_observation)
)
newobs = db.session.query(ObservationModel).options(
db.joinedload(ObservationModel.medias)
).get(newobs.id_observation)
features = newobs.get_feature()

id_taxonomy_list = newobs.program_ref.taxonomy_list
params = {'cd_nom': newobs.cd_nom}
params = {"cd_nom": newobs.cd_nom}
# Appel synchrone à taxhub_rest_get_taxon_list
if id_taxonomy_list is not None:
taxon_list_data = taxhub_rest_get_taxon_list(id_taxonomy_list, params)
Expand Down Expand Up @@ -314,7 +318,7 @@ def get_all_observations() -> Union[FeatureCollection, Tuple[Dict, int]]:
ProgramsModel.id_program == ObservationModel.id_program,
isouter=True,
)
.order_by(desc(ObservationModel.timestamp_create))
.order_by(desc(ObservationModel.date))
.filter(*filters)
)

Expand All @@ -325,11 +329,10 @@ def get_all_observations() -> Union[FeatureCollection, Tuple[Dict, int]]:
observations = query.all()
features = [obs.get_feature() for obs in observations]


if observations:
id_taxonomy_list = observations[0].program_ref.taxonomy_list
cd_nom_list = ','.join(map(str, {obs.cd_nom for obs in observations}))
params = {'cd_nom': cd_nom_list} if cd_nom_list else {}
cd_nom_list = ",".join(map(str, {obs.cd_nom for obs in observations}))
params = {"cd_nom": cd_nom_list} if cd_nom_list else {}
else:
id_taxonomy_list = None
params = {}
Expand All @@ -340,7 +343,6 @@ def get_all_observations() -> Union[FeatureCollection, Tuple[Dict, int]]:
else:
features_with_taxhub_info = features


feature_collection = FeatureCollection(features_with_taxhub_info)

if paginate:
Expand Down
9 changes: 8 additions & 1 deletion backend/gncitizen/core/sites/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,14 @@ def get_program_sites(id):
description: List of all sites
"""
try:
sites = SiteModel.query.filter_by(id_program=id).all()
sites = (
db.session.query(SiteModel)
.join(VisitModel, SiteModel.id_site == VisitModel.id_site)
.filter(SiteModel.id_program == id)
.order_by(VisitModel.date.desc())
.order_by(SiteModel.timestamp_create.desc())
.all()
)
return prepare_sites(sites)
except Exception as e:
return {"error_message": str(e)}, 400
Expand Down
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Documentation de GeoNature-citizen
configuration
administration
badges
update
devs/index
history

Expand Down
116 changes: 116 additions & 0 deletions docs/update.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# Mise à jour de GeoNature-citizen

## ⚠️ Prérequis et précautions

Avant toute mise à jour, **sauvegardez impérativement** :

- 📦 Les fichiers de l’application
- 🗃️ La base de données PostgreSQL
_ou_
- 🖼️ Réalisez un **snapshot complet** du serveur

> En cas de problème, cela permet de restaurer l’état antérieur de l'application.

---

## 🛠️ Méthode 1 – Mise à jour manuelle

### 1. Sauvegarder l'instance existante

```bash
cd ~/
mv ~/gncitizen ~/gncitizen_old
```

### 2. Télécharger la nouvelle version

```bash
VERSION=X.Y.Z # Remplacez X.Y.Z par la version cible
curl -OJL https://github.com/PnX-SI/GeoNature-citizen/archive/refs/tags/$VERSION.zip
unzip GeoNature-citizen-$VERSION.zip
mv GeoNature-citizen-$VERSION gncitizen
rm GeoNature-citizen-$VERSION.zip
```

### 3. Restaurer les fichiers de configuration et personnalisations

```bash
cp ~/gncitizen_old/config/settings.ini ~/gncitizen/config/
cp ~/gncitizen_old/config/config.toml ~/gncitizen/config/
cp ~/gncitizen_old/config/backoffice_* ~/gncitizen/config/
cp ~/gncitizen_old/config/badges_config.py ~/gncitizen/config/

cp ~/gncitizen_old/frontend/src/conf/app.config.ts ~/gncitizen/frontend/src/conf/
cp ~/gncitizen_old/frontend/src/conf/map.config.ts ~/gncitizen/frontend/src/conf/
cp -r ~/gncitizen_old/frontend/src/custom/* ~/gncitizen/frontend/src/custom/

cp -r ~/gncitizen_old/media/ ~/gncitizen/media/
```

> ✅ Ces fichiers devraient idéalement être suivis ou exclus proprement avec `.gitignore` si vous utilisez Git.

---

## 🌿 Méthode 2 – Mise à jour via Git (recommandée si dépôt cloné)

### 1. Aller dans le répertoire de l’application

```bash
cd ~/gncitizen
```

### 2. Mettre à jour le dépôt

```bash
git pull
```

> ⚙️ Les fichiers de config/perso sont gérés avec `.gitignore` et donc conservés.

---

## 📌 Étapes communes post-mise à jour

### 3. Lire les notes de version

Consultez les [notes de version](https://github.com/PnX-SI/GeoNature-citizen/releases) pour vérifier s’il y a :

- des scripts à exécuter
- des fichiers à modifier
- des migrations de base de données à effectuer

---

### 4. Lancer le script de mise à jour de l'application

```bash
cd ~/gncitizen
./install/update_app.sh
```

---

### 5. Effectuer les migrations de base de données (si nécessaire)

> ⚠️ Vérifiez la version cible de la BDD dans les notes de version pour définir le bon **Alembic stamp**.

```bash
ALEMBIC_STAMP=e8c1cd57ad16 # Remplacez par le hash correct selon la version

cd ~/gncitizen/backend
source .venv/bin/activate

flask db stamp $ALEMBIC_STAMP
flask db upgrade

deactivate
```

---

## ✅ C'est terminé !

L’application GeoNature-citizen est maintenant à jour.
Pensez à tester rapidement l’interface et les fonctionnalités principales pour valider la mise à jour.

⚠️ Pensez à supprimer le répertoire de l'installation précédente (`gncitizen_old`) afin de libérer de l'espace disque. En particulier le répertoire `media` qui a été copié dans le répertoire de la nouvelle version.
41 changes: 21 additions & 20 deletions install/update_app.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,34 @@ set -e

cd $(dirname $(dirname "${BASH_SOURCE[0]:-$0}"))

# Mise à jour du git
git pull
DIR=$(pwd)

. config/settings.ini
npm install
# Creation du repertoires de logs
mkdir -p var/log

. config/settings.ini
# Transpilation du frontend
cd frontend
# Source nvm.sh pour accéder à nvm
source ~/.nvm/nvm.sh
cd ${DIR}/frontend
nvm install
nvm use
npm install

echo "Build frontend"
echo "Build frontend ..."
npm run build:i18n-ssr

echo "Reloading Front server ..."
sudo -s supervisorctl reload geonature

cd ..
# Création du venv et mise a jour des requirements
echo "Upgrade backend ..."
cd $DIR/backend
venv_path=$DIR/backend/${venv_dir:-".venv"}
if [ ! -f $venv_path/bin/activate ]; then
python3 -m virtualenv $venv_path
fi
source .venv/bin/activate
pip install -r requirements.txt

# Mise a jour des requirements
FLASKDIR=$(readlink -e "${0%/*}")
APP_DIR="$(dirname "$FLASKDIR")"
venv_dir=".venv"
venv_path=$FLASKDIR/backend/$venv_dir
source $venv_path/bin/activate
echo $(pwd)
pip install -r backend/requirements.txt

# Reload Supervisor pour l'api
echo "Reloading Api ..."
sudo -s supervisorctl reload api_geonature
sudo supervisorctl restart gncitizen_api
sudo supervisorctl restart gncitizen_front