Skip to content

Commit

Permalink
improve doc, config and footer.html.sample
Browse files Browse the repository at this point in the history
  • Loading branch information
TheoLechemia committed Jan 15, 2025
1 parent 18d934a commit 5d09c60
Show file tree
Hide file tree
Showing 6 changed files with 174 additions and 169 deletions.
9 changes: 6 additions & 3 deletions atlas/configuration/config.py.example
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,6 @@ LANGUAGES = {
#####################
#####################

# Code de suivi des statistiques Google Analytics (si AFFICHAGE_FOOTER = True)
ID_GOOGLE_ANALYTICS = "UA-xxxxxxx-xx"

# Utiliser et afficher le glossaire (static/custom/glossaire.json.sample)
GLOSSAIRE = False

Expand Down Expand Up @@ -261,6 +258,12 @@ PATRIMONIALITE = {
}
}

# liste des application dont "orejime" controle la dépose de cookie
OREJIME_APPS = []

# traduction orejime (voir la doc cookie et RGPD pour comment le remplir)
OREJIME_TRANSLATIONS = {}

#############################
#### Lien custom du logo ####
#############################
Expand Down
24 changes: 23 additions & 1 deletion atlas/configuration/config_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,28 @@
},
}

orijime_default_translations = {
"fr": {
"consentModal": {
"description": "",
},
"purposes": {
"analytics": "Analyse",
"security": "Sécurité"
}
},
"en": {
"consentModal": {
"description": "This is an example of how to override an existing translation already used by Orejime",
},
"purposes": {
"analytics": "Analytics",
"security": "Security"
},

}
}


class SecretSchemaConf(Schema):
class Meta:
Expand Down Expand Up @@ -122,7 +144,6 @@ class Meta:
URL_APPLICATION = fields.String(load_default="")
DEFAULT_LANGUAGE = fields.String(load_default="fr")
MULTILINGUAL = fields.Boolean(load_default=False)
ID_GOOGLE_ANALYTICS = fields.String(load_default="UA-xxxxxxx-xx")
ORGANISM_MODULE = fields.Boolean(load_default=False)
DISPLAY_OBSERVERS = fields.Boolean(load_default=True)
GLOSSAIRE = fields.Boolean(load_default=False)
Expand All @@ -132,6 +153,7 @@ class Meta:
AFFICHAGE_FOOTER = fields.Boolean(load_default=True)
AFFICHAGE_RGPD = fields.Boolean(load_default=True)
OREJIME_APPS = fields.List(fields.Dict(), load_default=[])
OREJIME_TRANSLATIONS = fields.Dict(load_default=orijime_default_translations)
AFFICHAGE_STAT_GLOBALES = fields.Boolean(load_default=True)
AFFICHAGE_DERNIERES_OBS = fields.Boolean(load_default=True)
AFFICHAGE_EN_CE_MOMENT = fields.Boolean(load_default=True)
Expand Down
27 changes: 1 addition & 26 deletions atlas/static/custom/templates/footer.html.sample
Original file line number Diff line number Diff line change
Expand Up @@ -75,30 +75,5 @@
</div>
{% endif %}

<!-- Check ID_GOOGLE_ANALYTICS to keep compability with old Geonature-atlas -->
{% if configuration.OREJIME_APPS|length > 0 %}
<!-- Sample script Analytics Google -->
{% for app in configuration.OREJIME_APPS %}
{% if app.name == "scripts-gtm" %}
<script
type="opt-in"
data-type="application/javascript"
data-name="scripts-gtm">
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
<!-- BLOC TRACEURS / ANALYSES VIZA COOKIES -->

ga('create', '{{configuration.ID_GOOGLE_ANALYTICS}}', 'auto');
ga('send', 'pageview');
</script>
{% endif %}
{% endfor %}
{% endif %}
3 changes: 3 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ CHANGELOG
🚀 **Nouveautés**

- Ajout du lien "Données personelles" dans le pied de page (#527 @juggler31)
- Ajout de la librairie Orijeme pour recueillir le consentement de l'utilisateur sur l'utilisation des cookies

🐛 **Corrections**

Expand All @@ -21,6 +22,8 @@ CHANGELOG

⚠️ **Notes de version**

- Le paramètre `ID_GOOGLE_ANALYTICS` et la façon d'integrer un script google analytic sont dépréciés. Se référer à la documentation sur le RGPD et la collecte de cookies : https://github.com/PnX-SI/GeoNature-atlas/blob/master/docs/cookies_rgpd.rst

Si vous mettez à jour GeoNature-atlas :

- Exécutez le script SQL de mise à jour de la BDD : https://github.com/PnX-SI/GeoNature-atlas/blob/master/data/update/update_1.6.1to1.6.2.sql
Expand Down
141 changes: 141 additions & 0 deletions docs/cookies_rgpd.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
Gestion des cookies et RGPD
===========================

Cette section explique comment ajouter des outils de collectes de cookies (matomo, google analytics par ex) tout en respetant le RGPG. GeoNature-Atlas utilise pour cela une librairie permettant de receuillir le consentement de l'utilisateur: Orejime.

À quoi sert le RGPD
-------------------

Le règlement général sur la protection des données est utilisé afin de protéger les données à caractère personnel.

Où configurer l'application
---------------------------

Dans le fichier : `atlas/configuration/config.py`


- Définir les applications pour lesquelles il faut demander l'autorisation de la collecte de cookies via la variable **OREJIME_APPS**

En complément, se référer à la documentation officielle de l'outil orejim: https://github.com/empreinte-digitale/orejime

::

OREJIME_APPS = [
{
"name": "script-google", # ce nom devra être réutilisé dans la balise script (attribut `data-name`) du fichier `footer.html` ou le script d'analyse des cookies sera integré
"title": "Google Analytics",
"cookies": [
"_ga",
"_gat",
"_gid",
"__utma",
"__utmb",
"__utmc",
"__utmt",
"__utmz",
],
"purposes": ["analytics"],
"required": False,
"optOut": False,
"default": True,
"onlyOnce": True,
},
{
"name": "second-script",
"title": "Deuxième script",
"cookies": [
"_ga",
"_gat",
"_gid",
"__utma",
"__utmb",
"__utmc",
"__utmt",
"__utmz",
],
"purposes": ["analytics"],
"required": False,
"optOut": False,
"default": True,
"onlyOnce": True,
}
]

- Il est possible de surcharger les traductions grâce à la variable : **OREJIME_TRANSLATIONS**
Voir toutes les possibilité de traduction : https://github.com/empreinte-digitale/orejime
::

OREJIME_TRANSLATIONS = {
"fr": {
"consentModal": {
"description": "",
},
"purposes": {
"analytics": "Analyse",
"security": "Sécurité"
}
},
"en": {
"consentModal": {
"description": "This is an example of how to override an existing translation already used by Orejime",
},
"purposes": {
"analytics": "Analytics",
"security": "Security"
},

}
}

- Il est possible de catégoriser les applications nécessaires afin de les intégrer dans les choix des utilisateurs.

.. image :: images/choice_rgpd.png
::

OREJIME_CATEGORIES = [
{
"name": "analytics",
"title": "Analytics",
"apps": [
"script-google",
]
},
{
"name": "security",
"title": "Secutiry",
"apps": [
"second-script",
]
}
]

A la fin du fichier : `atlas/static/custom/templates/footer.html`, copiez collez cette exemple en l'adaptant à votre contexte et à votre configuration.
La variable `AFFICHAGE_FOOTER` doit êtes mise à `True` si on souhaite ajouter des traceurs de cookies.

Dans cet exemple, il s'agit d'un script de google analytics :
L'attribut `data-name` de la balise script doit correspondre a l'attribut `name` correspondant à l'application ORIJIME renseigné dans la variable de configuration `OREJIME_APPS`. Dans la configuration d'exemple, la première "l'app google" a pour attribut `name` : `scripts-google`, il faut donc mettre `scripts-google` dans l'attribut `data-name` de la balise script. C'est cet attribut qui permet à Orijeme de savoir quel cookies il va pouvoir accepter ou bloquer en fonction de la réponse de l'utilisateur.
Si vous souhaitez rajouter un deuxième traceur (matomo par exemple), faire un deuxième balise script séparée en respectant la même logique.

::

<!-- Sample script Analytics Google -->
<script
type="opt-in"
data-type="application/javascript"
data-name="scripts-google">
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');

ga('create', '<VOTRE_ID_GOOGLE_A_REMPLACER>', 'auto');
ga('send', 'pageview');
</script>
139 changes: 0 additions & 139 deletions docs/rgpd.rst

This file was deleted.

0 comments on commit 5d09c60

Please sign in to comment.