Coder Social home page Coder Social logo

geotrekce / geotrek-admin Goto Github PK

View Code? Open in Web Editor NEW
124.0 37.0 76.0 78.42 MB

Paths management for National Parks and Tourism organizations

Home Page: https://geotrek.fr

License: BSD 2-Clause "Simplified" License

Makefile 0.08% Shell 0.33% Python 85.55% PLpgSQL 1.76% HTML 6.39% JavaScript 4.45% CSS 1.19% Dockerfile 0.07% SCSS 0.16% Ruby 0.02%
django python postgis gis tourism trekking

geotrek-admin's Introduction

Geotrek, paths management for National Parks and Tourism organizations.

image

master

CI Status Coverage End to End Documentation

In brief

  • Web mapping application offering GIS features
  • Manage paths, interventions, signage, treks, POIs, touristic events and so much more
  • Track maintenance of equipments and infrastructures
  • Control objets by district, protected areas, physical and legal status of paths
  • Compute 3D attributes using DEM draping
  • Allow to interconnect with multiple applications to synchronize data (Suricate, Apidae, Tourinsoft, etc.)
  • Publish a public website with Geotrek-rando (e.g. PNE, PNM-PNAM)
  • Publish a public mobile application with Geotrek-mobile (e.g. OTGC, CD39)

image

More information on product website http://geotrek.fr

Documentation

Contribution

License

  • OpenSource - BSD
  • Copyright (c) 2012-2023 - Makina Corpus / Parc national des Ecrins - Parc National du Mercantour - Parco delle Alpi Marittime

image

image


image

image

image

Status of sub-projects

geotrek-admin's People

Contributors

amandine-sahl avatar anaethelion avatar babastienne avatar bruhnild avatar camillemonchicourt avatar chatewgne avatar claudep avatar dependabot[bot] avatar djcoin avatar fredericbonifas avatar geobrun avatar gutard avatar huquette avatar idrissad avatar jeanlenormand avatar juggler31 avatar justinefricou avatar kiorky avatar kostar111 avatar lepetittim avatar leplatrem avatar lpofredc avatar mabhub avatar marcantoinedupre avatar mviadere-openig avatar numahell avatar pierreloicq avatar submarcos avatar tdesveaux avatar theolechemia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geotrek-admin's Issues

Inverser un tronçon

Aller sur le formulaire d'un tronçon. Cocher "inverser". Sauvegarder.
Noter que le profil altimétrique est inversé.

Exporter la liste obtenue au format Shape

Sur la vue de chaque entité, je peux exporter la liste courante au format shape.

Un fichier shape est composé de 4 fichiers différents (shp, shx, prj, dbf).
Il ne peut contenir qu'un seul type de géometrie, ainsi, un fichier shape
distinct sera créer par type de géométrie (point, ligne, ...).

Les géométries resteront dans leur projection initiale (epsg:2154 - lambert 93).

L'export entrainera la création et le téléchargement d'un zip comprenant
l'ensemble de ces fichiers.

Les données attributaires seront pour l'instant celles de la liste en cours.

Cas particulier:

  • Un projet correspond à un ensemble d'intervention, donc d'évènements.
    Or, un évènement peut être un point ou une ligne, nous obtenons
    donc un projet qui peut être réparti sur des fichiers shapes différents.
    Les données attributaires d'un projet seront celle de la liste en cours
    ainsi qu'un élément (id, nom) permettant de distinguer l'intervention
    correspondant à la géometrie.

Gérer les permissions d'édition des objets en fonction de la structure

  • Se logger avec un utilisateur du groupe Référant sentiers de la structure PNE.
  • Vérifier que l'édition des tronçons est accessible.
  • Changer la structure d'un tronçon.
  • Vérifier qu'il n'est plus possible d'accéder au formulaire d'édition avec ce même utilisateur.

Doit-on permettre le changement de structure depuis le formulaire au risque
que l'utilisateur perde accès à l'objet ?

Éditer en Wysiwyg les champs texte

  • Ouvrir n'importe quel formulaire, chaque champ texte contient un petit éditeur
    Wysiwyg (TinyMCE) avec les options de base.
  • Le champ est sauvegardé avec le texte au format HTML.

Éditer les listes de choix avec l'AdminSite Django

  • Scénario 1 - CRUD et liaison à une structure
    • Connexion avec un compte admin.
    • CRUD prestataire (par exemple)
    • Association avec une structure précise
  • Scénario 2 - CRUD et traduction
    • Connexion avec un compte admin.
    • Changer la langue du compte.
    • Vérifier que les menus et les formulaires des objets sont bien traduits dans
      la langue de l'utilisateur
  • Scénario 3 - CRUD et champs multilingues
    • CRUD "usages" (par exemple)
    • Traduction d'un même enregistrement en anglais/francais/italien
    • Vérification de la bonne traduction de cet élement dans l'interface en fonction de la langue
      de l'utilisateur

Montrer la carte globale sur la page d'accueil

La page d'accueil affiche une carte avec les tronçons.

:note:

Pour l'instant, la carte est en projection 4326 (attente fin POC #12).

Les performances ne sont pas au rendez-vous (6 sec. pour générer le fichier, 11 millisec. pour l'afficher)

Filtrer les objets de la liste en fonction de l'étendue de la carte affichée

** recette **

En plus des filtres déjà présents, je peux filtrer géographiquement par l'étendue courante visible de carte.
Lors de chaque déplacement, la liste est mise à jour pour n'afficher que les objets visibles sur la carte.
La réinitialisation du formulaire réinitialise de plus la carte à son étendue de départ.
Un 'spinner' sur la carte représentera l'avancement du filtrage.

🎶

Détail d'implémentation 1: la bbox n'est pas fournie conventionnellement selon ?bbox=minx,miny,maxx,maxy mais comme un WKT.
C'est un choix plus pratique car les fonctions de conversion (côté js et django) existent déjà
qui peuvent éviter de potentiels problèmes  (ex: gestion de la coordonnée Z, de la projection, etc.).
La gestion du filtrage via une géométrie quelconque est de plus réutilisable (ex. secteurs, communes, etc.)

Détail d'implémentation 2: lorsque le tri est purement géographique (mouvement de carte uniquement),
les objets présents sur la carte (contrairement à la liste des résultats) ne sont pas retirés
(mais ne sont pas visibles bien sûr) pour des raisons de performance.

Paramétrer l'étendue du territoire

La carte de la page d'accueil est restreinte à la zone du parc en fonction
du setting SPATIAL_EXTENT.

Ce dernier doit être exprimé dans le système de coordonnées du setting SRID.

:note:

Pour l'instant, le paramètre est exprimé en dur, en coordonnées 4326 (attente fin POC #12).

Charger la liste des tronçons en asynchrone

  • Ouvrir la page des tronçons, la liste est vide pendant une fraction de secondes.
  • Vérifier que la liste se charge correctement en asynchrone. Par exemple
    avec l'inspecteur Firebug, vérifier que les données JSON sont reçues et la
    liste est raffraichie.

Limiter les listes de choix à ceux de la structure de l'utilisateur

Créer plusieurs objets, associés à des structures différentes (ex: prestataires).

Vérifier que la liste (temporaire au sprint 1) affichée dans l'interface contient
bien les objets crées.

Si je change la structure de l'utilisateur. La liste des objets associés à la structure change.

Si je change la structure d'un objet, il n'apparait plus dans la liste.

Exporter l'itinéraire au format GPX

Sur la vue de chaque entité, je peux exporter la liste courante au format GPX.
Un point seul (un évènement de type point) est ajouté comme un "Way Point".
Une liste de point (une ligne - évènement ou tronçon -) est ajouté comme une route.

Ne sont exportés au format GPX que les géométries (aucune autre donnée pour le moment).
Les géométries seront reprojetées en projection GPS (WGS 84).

Cas particulier:

  • Un sentier est une union de tronçons: un sentier est ajouté comme une seule route
  • Un projet correspond à un ensemble d'intervention, donc d'évènements:
    tous les évènements (ligne et point) sont fusionnés au sein d'une unique route

Sélectionner un objet sur la carte le sélectionne dans la liste. Et vice-versa

Dans la vue de liste de chaque entité:

  • un clic de l'entité sur la carte sélectionne dans la liste ajax (avec changement de page)
  • vice-versa, un clic sur une ligne dans la liste ajax sélectionne l'entité sur la carte

Une seule entité peut être sélectionnée à la fois, une nouvelle sélection (clic carte ou liste)
entraine la déselection de la précédente entité selectionnée.

Un clic carte ou liste sur une entité déjà sélectionnée entraine sa déselection.

Une sélection se traduit dans le tableau et dans la carte par un style spécifique.

Un double clic de l'entité sur la carte affiche la fiche détail.
Un clic sur le lien de la 1ere colonne (ex. nom) affiche la fiche détail.

Paramétrer le logo de l'application

Pour l'instant, seuls deux logos sont définis :

  • logo-login.png : affiché sur la page de connexion
  • logo-header.png : affiché dans la barre d'outils de l'application

Leur emplacement est var/media/upload/ dans l'arborescence du projet.

Affecter automatiquement le zonage/commune/secteurs aux objets crées/modifiés

Les notions d'évènement n'étant pas disponible dans l'interface, il faut tester
avec PgAdmin et/ou QGIS.

  • Éditer un tronçon (ajout/suppression/modification)
  • Dans PgAdmin, on peut constater que les tables permettant l'association avec
    les communes/secteurs/zonages ont été mises à jour. (Ces tables sont :
    evenements_troncons, evenements et zonage/commune/secteur).

Muter une intervention plannifiée en aménagement

Je peux transformer une intervention en aménagement lorsqu'elle est réalisée

(à détailler)

CAMILLE: Je ne pense pas qu'il faille gérer comme cela. Car on n'aura plus de trace de l'intervention de CREATION de cet aménagement ou signalétique.

Autre solution discutable: La démarche n'est pas évidente mais je pense qu'il faut procéder comme cela quand on veut planifier la création d'un aménagement ou signalétique:

  1. Je créé l'aménagement même si il n'existe pas encore.
  2. J'y ajoute une intervention de type CREATION que je fixe à une date ultérieure. Du coup on aura un aménagement dans la liste même si il ne sera pas encore créé mais je ne vois pas comment faire autrement pour rester générique.

Cependant cela impose de donner des droits aux agents de terrain sur la signalétique et les aménagements (non logique).

Exporter la fiche au format bureautique

Il est désormais possible d'accéder à la version OpenDocument (OpenOffice)
de la fiche.

Pour l'instant la fiche ne contient aucune information à part les dates d'insertion,
de modification et une image avec une carte centrée sur l'objet.

🎶

* il n'y a pas de mise en cache, et l'obtention de la carte en image est
  assez longue.

* il faudra décliner la fiche pour chaque type d'objet, ou utiliser tout
  simplement les mêmes informations que ce qui est présenté dans la version
  Web.

* pour les itinéraires, il faudra prévoir autant de versions que de langues,
  avec à chaque fois la distinction avec/sans POI.

Sprint 5 - Version 0.5.0

Accéder facilement aux fiches des objets liés à un objet

  • S'assurer qu'il existe au moins quelques données de démonstration pour les
    types d'objets "tronçon", "intervention", "chantier", "signalétique",
    "aménagement", "foncier", "itinéraire" et "POI"
  • Aller sur la fiche d'un tronçon et suivre les liens vers les tronçons
    fonciers, les interventions, les chantiers, les signalétiques et les
    aménagements.
  • Aller sur la fiche d'une intervention et suivre les liens vers les tronçons.
    La fiche indique également si l'intervention porte sur un aménagement ou
    signalétique et si elle fait partie d'un chantier.
  • Aller sur la fiche d'un chantier et suivre les liens vers les tronçons, les
    signalétiques et les aménagements.
  • Aller sur la fiche d'une signalétique et suivre les liens vers les tronçons
    et les interventions.
  • Aller sur la fiche d'un aménagement et suivre les liens vers les tronçons et
    les interventions.
  • Aller sur la fiche d'un itinéraire et suivre les liens vers les tronçons et
    les POIs.
  • Aller sur la fiche d'un POI et suivre le lien vers les itinéraires.

Gérer les permissions d'accès aux modules en fonction des groupes

Lorsque je me connecte en tant que "référents sentiers" ou en tant
qu'administrateur, les boutons pour ajouter/modifier/supprimer un sentier sont
actifs.

Lorsque je me connecte avec un autre utilisateur, les boutons sont inactifs et
si j'essaye de forcer l'accès en allant directement à l'URL :

http://server/path/edit/73/

Je suis redirigé vers la vue de détail (en lecture seule) de cet objet.

Les utilisateurs de tests sont :

  • sentiers/sentiers (référent sentier - autorisé)
  • admin/admin (administrateur - autorisé)
  • comm/comm (référent communication - non autorisé)
  • redacteur/redacteur (rédacteur - non autorisé)

:note:

La notion de droit incrémental sera implémentée plus tard, lorsque
nous travaillerons sur la connexion avec le système de gestion des
utilisateurs du parc.

:note:

Les droits ne sont gérés que pour les sentiers pour le moment. La
gestion module par module arrivera plus tard.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.