Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use PGRouting to handle routing directly in Database through API #4070

Draft
wants to merge 156 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 151 commits
Commits
Show all changes
156 commits
Select commit Hold shift + click to select a range
8c79d9e
Add TrekGeometry view with get and post methods
Apr 10, 2024
4744348
Add a parameter to TrekGeometry post method
Apr 10, 2024
a290ade
Add graph and steps info being sent to TrekGeometry view
Apr 12, 2024
9735876
Add computing of the dijkstra matrix and start and end nodes (only ha…
Apr 12, 2024
7263e8e
Add computing of the path to follow (node to node) (handles whole edg…
Apr 15, 2024
d0e1423
Modify path in response: it's now from start to end
Apr 15, 2024
3af92b2
Refacto: nodes idx to id correspondence
Apr 15, 2024
cd043bd
Add structure of algorithm handling partial edges and more than 2 steps
Apr 15, 2024
a28c00c
ADD handling of edge percentage and more than 2 markers
Apr 16, 2024
1d4182c
Add display of a hard-coded polyline sent from the TrekGeometry view
Apr 16, 2024
73e42a4
The graph is directly taken from the backend
Apr 16, 2024
a844431
Add handling of GPS coordinates as input
Apr 17, 2024
26e7064
Add use of Point ewkt when using sql
Apr 17, 2024
5372707
Add TODOs for next step: obtaining a LineString from dijkstra results
Apr 17, 2024
ca20fad
Starting to work on converting the resulting nodes list into LineStrings
Apr 17, 2024
96c73aa
Add conversion of dijstra results into a displayed Linestring
Apr 18, 2024
c23daee
Correctng some comments
Apr 23, 2024
1de5806
Fix path not computed if adjacent steps are on the same edge
Apr 23, 2024
c97f470
Fix negative dijkstra weight when we're going backwards relative to a…
Apr 23, 2024
a684bd2
Fix path not computed when going backwards on a Path if going through…
Apr 23, 2024
bf7363b
Starting to display fetched route instead of locally computed route
Apr 25, 2024
92ac2ff
Preparing topology_helper to handle several linestrings
Apr 25, 2024
df69913
Automating the geojson generation in the view
Apr 25, 2024
e10d322
Add handling of several steps
Apr 26, 2024
cae1660
Replacing MultiLineString by GeometryCollection in Response
Apr 26, 2024
4e44963
Fixing the organization of layers in the displayed path
Apr 26, 2024
c432b59
Removing old code related to the graph
Apr 26, 2024
b490349
Removing old code
Apr 26, 2024
2d9ec43
Removing old code
Apr 26, 2024
b946802
Making the TrekGeometry post method into a PathViewSet action
Apr 29, 2024
09a50e4
Reordering PathRouter methods
Apr 29, 2024
955243f
Removing graph action of PathViewSet
Apr 29, 2024
a46062d
Moving initial graph generation into the PathRouter class
Apr 29, 2024
003f295
Removing no longer used imports
Apr 29, 2024
aff9070
Renaming graph.py to path_router.py
Apr 29, 2024
e8d245c
Adding parameters error handling for the route_geometry action
Apr 29, 2024
d0539ea
Using dict.update instead of a custom method
Apr 29, 2024
a4d6b0a
Adding status codes to Responses
Apr 30, 2024
52f7e3f
Optimizing the cs_graph generation (generating the upper triangle the…
May 2, 2024
3d16a87
Optimizing matrix generation: it is now generated at init and modifie…
May 2, 2024
a03f8ba
Optimizing matrix generation by using its symmetrical property
May 2, 2024
597235d
Refactoring: making duplicate code into a method
May 3, 2024
58d83d5
The route is now fetched only when the marker dragging stops
May 3, 2024
391c9d9
Saving the dijkstra matrix in the cache
May 6, 2024
9b3752f
Saving the path graph in the cache
May 6, 2024
477acf2
Moving duplicate cache-related code into a single method
May 6, 2024
f59f51f
Add handling of an impossible path: the view returns a status 204 and…
May 6, 2024
0af7bb8
Modify error handling in js: using Promise.reject
May 6, 2024
efb228c
Correct returns when no path could be found
May 13, 2024
49b34a1
Replaces status 204 by status 400 when no path can be found
May 13, 2024
4cf9176
Add a spinner when the route is being fetched
May 14, 2024
8227f9b
Add sending of the modified steps indexes to fetchRoute
May 14, 2024
39f1689
Adds fetching of the route for only the modified steps
May 14, 2024
9d201a4
Add algorithm that updates the displayed route layers
May 16, 2024
a1ae35c
Add use of currently displayed layers indexes to replace them
May 16, 2024
0a93c7c
Fix replacing the currently displayed layers indexes by new ones
May 16, 2024
015d230
Fix updating layers not working after removing a marker
May 16, 2024
92c3de7
Bump leaflet.textpath.js to v1.1.0
May 17, 2024
2ac2860
Move leaflet static files into a vendor directory
May 17, 2024
45e7bfe
Bump leaflet.lineextremities.js to v0.1.1
May 21, 2024
84214ca
Fix missing path layer when an unlinkable via marker is removed
May 21, 2024
a824083
Remove console logs
May 21, 2024
d111866
Add coloring of the markers when one is isolated
May 22, 2024
55f5ae0
Add coloring of all markers to normal appearance when back to normal
May 22, 2024
cfdd9bd
Add enabling/disabling of markers drag when a route is correct/incorrect
May 22, 2024
eca1af4
Add enabling/disabling of markers deletion when a route is correct/in…
May 22, 2024
3215c1f
Add impossibility of creating new via-steps while the route is invalid
May 23, 2024
f6a31b1
Move spinner.stop() into a finally()
May 23, 2024
01f05c5
Fix one route layer missing when an isolated via-step is corrected
May 24, 2024
81c5c91
Add deletion of a marker if not dropped on a path
May 24, 2024
d5e2e8e
Add resetting of a marker to its previous valid position when not dro…
May 24, 2024
5587f72
Fix isolated marker highlight being removed when reset to its previou…
May 24, 2024
e253faa
Remove duplicate part of code
May 24, 2024
7187134
Remove hiding of route layer when the start or end marker is moved
May 24, 2024
b2a2f88
Fix out of date step idx used when deleting a via point
May 24, 2024
233d6b2
Add display of an error toast when a marker is incorrect
May 27, 2024
d29d550
Modify error_toast elements class names for genericity
May 30, 2024
a650a9b
Fix toast stacking: top toast not on the bottom when it's the only on…
May 30, 2024
ddab4a0
Fix wrong marker being deleted after trying to create an unsnapped ma…
May 30, 2024
182beca
Fix route layer not displayed after start and end markers created and…
May 30, 2024
8fe0220
Add disabling of markers when the route is being fetched
May 30, 2024
ff5286f
Add saving of the route topology through the form
May 30, 2024
f69a3ee
Add modification of the route topology through the edit form
Jun 3, 2024
37430d9
Fix Geotrek object no longer created before use
justinefricou Jun 10, 2024
46c1306
Remove use of non-sparse matrix for dijkstra (using csr_array)
justinefricou Jun 10, 2024
89f721e
Modify use of sparse array (using lil_array instead of csr_array)
justinefricou Jun 11, 2024
8f14918
Optimize dijkstra matrix generation
justinefricou Jun 12, 2024
f3cdb1c
Remove calls to now deleted js scripts
justinefricou Jun 12, 2024
cbbb2ac
Remove no longer used methods
justinefricou Jun 12, 2024
122657a
Add benchmarking system based on frontend routing version
justinefricou Jul 1, 2024
dd9b641
Fix typo in cypress.config.js
justinefricou Jul 1, 2024
8b48e5d
Startng to work on adapting frontend benchmark system for backend
justinefricou Jul 1, 2024
ecd7939
Add record of the number of runs for a benchmark measure
justinefricou Jul 2, 2024
401ae36
Modify route control clicking via cypress
justinefricou Jul 2, 2024
7107094
Replace broken 3 via-pts topology with a 2 via-pts topology
justinefricou Jul 2, 2024
1ddd78d
Modify cypress benchmark: adapt the frontend version to work with bac…
justinefricou Jul 2, 2024
c4be513
Modify python time measures: now in milliseconds instead of seconds
justinefricou Jul 2, 2024
bac1b99
Modify time measurement: startTime is now recorded before the click/d…
justinefricou Jul 2, 2024
0b240da
Modify benchmark.sh: making the session id a variable
justinefricou Jul 2, 2024
2afcadf
Add scenario using the big DB and no via point
justinefricou Jul 2, 2024
f28d309
Add display of current branch name for each measure
justinefricou Jul 3, 2024
67eecb8
Replace big database no via pts scenario with 25 via pts scenario
justinefricou Jul 4, 2024
34d778c
Add readme for the benchmarking system
justinefricou Jul 4, 2024
52047e7
Modify benchmarking script: cypress spec file and session id are now …
justinefricou Jul 4, 2024
2423f7c
Fix crash when computing time averages if a file is missing
justinefricou Jul 4, 2024
4b2c4ab
Add 2 via-pts topology for big database
justinefricou Jul 5, 2024
542c24c
Replace 25-via-pts scenario with 2-via-pts scenario for big database
justinefricou Jul 5, 2024
579025d
Add unit tests for route_geometry view (check of request body)
justinefricou Jul 5, 2024
7a80fd2
Modify cypress timeouts: now 30min
justinefricou Jul 5, 2024
74abdff
Start to work on impossible and possible path test cases
justinefricou Jul 5, 2024
c6b47a4
Add check of lat and lng type and range in route_geometry view
justinefricou Jul 5, 2024
88847bc
Fix request body not sent in the right format (route_geometry tests)
justinefricou Jul 5, 2024
79a3455
Add new scenario for big DB with no via point
justinefricou Jul 8, 2024
fbab465
Add test case: steps not on paths
justinefricou Jul 8, 2024
c536f1f
Add test case: steps one paths not linked
justinefricou Jul 8, 2024
3b14baf
Add tests for route_geometry view
justinefricou Jul 8, 2024
8838764
Fix test for the route_geometry view
justinefricou Jul 8, 2024
1cb930c
Remove prints
justinefricou Jul 8, 2024
c4863e5
Move benchmarking directory into tools/
justinefricou Jul 8, 2024
17cb8d7
Fix norm
justinefricou Jul 8, 2024
1740610
Modify Cypress 'create trek' test after routing changes
justinefricou Jul 8, 2024
9abca3a
Try to fix cypress e2e tests
justinefricou Jul 9, 2024
f2d74a4
Uncomment env_dev settings
justinefricou Jul 9, 2024
bed505e
Modify Cypress e2e tests: actually click on paths to create a trek
justinefricou Jul 9, 2024
8def26c
Remove console.log and debugger
justinefricou Jul 9, 2024
fe5a19d
Fix cypress e2e tests: id of clicked path
justinefricou Jul 9, 2024
448967e
Add test case for route_geometry view: error 500
justinefricou Jul 9, 2024
bf9e6ae
Try to fix cypress tests: ensure the topology control is enabled befo…
justinefricou Jul 9, 2024
6b6cc98
Comment content of test_graph temporarily
justinefricou Jul 9, 2024
e00e654
Adapt graph generation tests to the new routing system
justinefricou Jul 10, 2024
2f26b54
Add tests for path_router
justinefricou Jul 10, 2024
55898e3
Add unit test for cache handling in path_router
justinefricou Jul 10, 2024
86c7725
Fix cache-related test for PathRouter
justinefricou Jul 10, 2024
fa8c44d
Modify test_route_geometry_not_fail_with_via_points_several_paths to …
justinefricou Jul 11, 2024
a15c53f
Modify route_geometry tests: more precision when checking results
justinefricou Jul 11, 2024
3da50d0
Remove old unit test for route_geometry view
justinefricou Jul 11, 2024
74c72f3
Remove redundant unit test for path_router
justinefricou Jul 12, 2024
f836d06
Add script to take backend time measures
justinefricou Jul 12, 2024
7f3fd07
Add steps for route with 100 via-pts for backend time measures script
justinefricou Jul 12, 2024
8cfd90a
Fix topology used in 100-via-pts fixture
justinefricou Jul 15, 2024
553f361
Add big database topology in backend time measuring script
justinefricou Jul 15, 2024
0201aeb
Improve readability of path_router test: using yied
justinefricou Jul 15, 2024
2efd83b
Update benchmark README to include the new script
justinefricou Jul 15, 2024
0530be6
Fix requirements.txt after rebase
justinefricou Jul 23, 2024
3eadf2b
Modify leaflet map: start spinner and disable markers ASAP
justinefricou Jul 30, 2024
de17dee
Modify leaflet map: stop spinner and reenable markers as late as poss…
justinefricou Jul 30, 2024
488ffb2
Adapt backend benchmark script to new PR
justinefricou Aug 5, 2024
ad2d965
Modify display of route layers: only redisplay those affected by a ro…
justinefricou Aug 14, 2024
58924cd
Fix route modif not saved if an incorrect marker has been fixed
justinefricou Aug 27, 2024
7e9c1eb
Fix path layers not displayed at creation
justinefricou Aug 27, 2024
0f81f5d
Use pg routing (#4245)
justinefricou Sep 13, 2024
476e394
Apply suggestions from code review
submarcos Sep 16, 2024
a3a1a4c
🐛 [BUG] Fix reset layer
Chatewgne Sep 17, 2024
acb8d7a
🏗 [MAINT] Remove unused dependency scipy
Chatewgne Sep 17, 2024
6729f20
🏗 [MAINT] Remove unused dependency scipy
Chatewgne Sep 17, 2024
4a85772
Merge branch 'master' into move_routing_to_backend
submarcos Oct 8, 2024
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
6 changes: 3 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:

services:
postgres:
image: postgis/postgis:12-2.5
image: pgrouting/pgrouting:12-3.0-2.6.3
env:
POSTGRES_DB: ci_test
POSTGRES_PASSWORD: ci_test
Expand Down Expand Up @@ -253,7 +253,7 @@ jobs:

services:
postgres:
image: postgis/postgis:12-2.5
image: pgrouting/pgrouting:12-3.0-2.6.3
env:
POSTGRES_DB: ci_test
POSTGRES_PASSWORD: ci_test
Expand Down Expand Up @@ -337,7 +337,7 @@ jobs:

services:
postgres:
image: postgis/postgis:12-2.5
image: pgrouting/pgrouting:12-3.0-2.6.3
env:
POSTGRES_DB: ci_test
POSTGRES_PASSWORD: ci_test
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ __pycache__/
geotrek/settings/custom.py
geotrek/cypress/node_modules
Makefile.perso.mk

# Benchmarking
tools/benchmarking/time_measures/
tools/benchmarking/cypress/videos/
tools/benchmarking/cypress/screenshots/
tools/benchmarking/node_modules/

# buildout stuff
.mr.developer.cfg
.installed.cfg
Expand Down
11 changes: 4 additions & 7 deletions cypress/integration/nav_create_trek.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,7 @@ describe('Create trek', () => {
cy.visit('/trek/list');
cy.wait('@tiles');
cy.server();
cy.route('/api/path/drf/paths/graph.json').as('graph');
cy.get("a.btn-success[href='/trek/add/']").contains('Add a new trek').click();
cy.wait('@graph');
cy.get("a.linetopology-control").click();
cy.get("textarea[id='id_topology']").type('[{"pk": 2, "kind": "TREK", "offset": 0.0, "paths": [3], "positions": {"0": [0.674882030756843, 0.110030805790642]}}]', {
force: true,
parseSpecialCharSequences: false
});
cy.get("input[id='id_duration']").type('100');
cy.get("input[name='name_en']").type('Trek number 1');
cy.get("a[href='#name_fr']").click();
Expand All @@ -52,6 +45,10 @@ describe('Create trek', () => {
cy.setTinyMceContent('id_description_teaser_en', 'Description teaser number 1');
cy.setTinyMceContent('id_ambiance_en', 'Ambiance number 1');
cy.setTinyMceContent('id_description_en', 'Description number 1');
cy.get("a.linetopology-control").click();
cy.clickOnPath(3, 67);
cy.clickOnPath(3, 11);
cy.get('[data-test^="route-step-"]');
cy.get('#save_changes').click();
cy.url().should('not.include', '/trek/add/');
cy.get('.content').should('contain', 'Trek number 1');
Expand Down
51 changes: 51 additions & 0 deletions cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,55 @@ Cypress.Commands.add('loginByCSRF', (username, password) => {

Cypress.Commands.add('mockTiles', (username, password) => {
cy.intercept("https://*.tile.opentopomap.org/*/*/*.png", {fixture: "images/tile.png"}).as("tiles");
});

Cypress.Commands.add('getCoordsOnMap', (pathPk, percentage) => {
cy.getPath(pathPk).then(path => {
let domPath = path.get(0);

// Get the coordinates relative to the map element
let pathLength = domPath.getTotalLength();
let lengthAtPercentage = percentage * pathLength / 100;
return domPath.getPointAtLength(lengthAtPercentage);
})
});

Cypress.Commands.add('getCoordsOnPath', (pathPk, percentage) => {
cy.getPath(pathPk).then(path => {
cy.getCoordsOnMap(pathPk, percentage).then(coordsOnMap => {
// Convert the coords so they are relative to the path
cy.getMap().then(map => {
let domMap = map.get(0);
let domPath = path.get(0);

// Get the coords of the map and the path relative to the root DOM element
let mapCoords = domMap.getBoundingClientRect();
let pathCoords = domPath.getBoundingClientRect();
let horizontalDelta = pathCoords.x - mapCoords.x;
let verticalDelta = pathCoords.y - mapCoords.y;

// Return the coords relative to the path element
return {
x: coordsOnMap.x - horizontalDelta,
y: coordsOnMap.y - verticalDelta,
}
});
})

})
})

Cypress.Commands.add('getMap', () => cy.get('[id="id_topology-map"]'));
Cypress.Commands.add('getPath', pathPk => cy.get(`[data-test=pathLayer-${pathPk}]`));

Cypress.Commands.add('clickOnPath', (pathPk, percentage) => {
// Get the coordinates of the click and execute it
cy.getCoordsOnPath(pathPk, percentage).then(clickCoords => {
let startTime;
cy.getPath(pathPk)
.then((path) => {startTime = performance.now(); return path})
.click(clickCoords.x, clickCoords.y, {force: true})
// Return startTime so it is yielded by the command
.then(() => startTime);
});
});
1 change: 1 addition & 0 deletions debian/postinst
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ if [ "$MANAGE_DB" = "true" ] && [ -z "$2" ]; then
# postgis_raster is only useful on postgis 3, it fails on postgis 2 but this is harmless
su postgres -c "psql -q -d $POSTGRES_DB -c 'CREATE EXTENSION postgis_raster;'" || true
su postgres -c "psql -q -d $POSTGRES_DB -c 'CREATE EXTENSION pgcrypto;'" || true
su postgres -c "psql -q -d $POSTGRES_DB -c 'CREATE EXTENSION pgrouting;'" || true
fi

# Generate secret key
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ x-images:

services:
postgres:
image: postgis/postgis:12-2.5
image: pgrouting/pgrouting:12-3.0-2.6.3
env_file:
- .env
ports:
Expand Down
24 changes: 17 additions & 7 deletions docs/install/import.rst
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,16 @@ To import a shapefile containing your paths, use the command ``loadpaths``::
--srid=2154 --comments-attribute IT_VTT IT_EQ IT_PEDEST \
--encoding latin9 -i

After importing a large quantity of paths, it is recommended to pre-generate the
paths graph needed for the routing. This action is not mandatory, but will reduce the time needed for the first
routing following the import.

To pre-generate the graph, use the ``generate_pgr_network_topology`` command::

sudo geotrek generate_pgr_network_topology
OR
docker compose run --rm web ./manage.py generate_pgr_network_topology

.. _import-data-from-touristic-data-systems-sit:

Import data from touristic data systems (SIT)
Expand Down Expand Up @@ -144,7 +154,7 @@ Don't forget the u character before strings if they contain non-ascii characters

In this case categories and types in Geotrek database have to be the same as in Esprit parc database. Otherwise missing categories and types will be created in Geotrek database.

Imported contents will be automatically published and approved.
Imported contents will be automatically published and approved.

If you use an url that filters a unique category, you can change its name. Example to get only Honey products and set the Geotrek category and type in which import them:

Expand Down Expand Up @@ -173,7 +183,7 @@ When sensitive areas module is enabled, Geotrek provides 3 parsers to import dat

* **Import sensitive areas from http://biodiv-sports.fr** (``geotrek.sensitivity.parsers.BiodivParser``). By default this
parser imports all sensitive areas in configured spatial extent.
* **Import species sensitive areas from a zipped shapefile**.
* **Import species sensitive areas from a zipped shapefile**.
Imported field names are: ``espece`` (required), ``contact`` and ``descriptio``. Species with corresponding names have to be created manually before import.
* **Import regulatory sensitive areas from a zipped shapefile**. Imported field names are: ``nom`` (required), ``contact``, ``descriptio``, ``periode`` (month numbers separated with comas), ``pratiques`` (separated with comas), and ``url``. Practices with corresponding names have to be created manually before import.

Expand Down Expand Up @@ -228,7 +238,7 @@ In the following example, ``Provider_1Parser`` and ``Provider_2Parser`` will eac


.. danger::
It is recommended to use ``provider`` from the first import - Do not add a ``provider`` field to preexisting parsers that already imported objects, or you will have to manually set the same value for ``provider`` on all objects already created by this parser.
It is recommended to use ``provider`` from the first import - Do not add a ``provider`` field to preexisting parsers that already imported objects, or you will have to manually set the same value for ``provider`` on all objects already created by this parser.


.. danger::
Expand Down Expand Up @@ -450,7 +460,7 @@ You can also use some of Geotrek commands to import data from a vector file hand

Possible data are e.g.: POI, infrastructures, signages, cities, districts, restricted areas, dives, paths.

You must use these commands to import spatial data because of the dynamic segmentation, which will not be computed if you enter the data manually.
You must use these commands to import spatial data because of the dynamic segmentation, which will not be computed if you enter the data manually.

Here are the Geotrek commands available to import data from file:

Expand All @@ -470,7 +480,7 @@ To get help about a command:
::

sudo geotrek help <subcommand>

.. _import-dem-altimetry:


Expand Down Expand Up @@ -955,10 +965,10 @@ Merge segmented paths
A path network is most optimized when there is only one path between intersections.
If the path database includes many fragmented paths, they could be merged to improve performances.

You can run ``sudo geotrek merge_segmented_paths``.
You can run ``sudo geotrek merge_segmented_paths``.

.. danger::
This command can take several hours to run. During the process, every topology on a path will be set on the path it is merged with, but it would still be more efficient (and safer) to run it before creating topologies.
This command can take several hours to run. During the process, every topology on a path will be set on the path it is merged with, but it would still be more efficient (and safer) to run it before creating topologies.

Before :
::
Expand Down
5 changes: 4 additions & 1 deletion geotrek/common/templates/common/sql/pre_20_extensions.sql
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
-- Used to ensure extension is enabled even in test database (migrations disabled)
-- Otherwise UUIDs on objects can not be generated on insert (including path splits)
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
CREATE EXTENSION IF NOT EXISTS "postgis";
CREATE EXTENSION IF NOT EXISTS "postgis_raster";
CREATE EXTENSION IF NOT EXISTS "pgrouting" CASCADE;
57 changes: 0 additions & 57 deletions geotrek/core/graph.py

This file was deleted.

11 changes: 10 additions & 1 deletion geotrek/core/locale/de/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-03 15:39+0000\n"
"POT-Creation-Date: 2024-05-28 14:23+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down Expand Up @@ -311,6 +311,15 @@ msgstr ""
msgid "Cancel"
msgstr ""

msgid "Warning"
msgstr ""

msgid "The marker was not dropped on a path."
msgstr ""

msgid "No routing found for this marker. Please move or delete it."
msgstr ""

msgid "No certification"
msgstr ""

Expand Down
11 changes: 10 additions & 1 deletion geotrek/core/locale/en/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-03 15:39+0000\n"
"POT-Creation-Date: 2024-05-28 14:23+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down Expand Up @@ -311,6 +311,15 @@ msgstr ""
msgid "Cancel"
msgstr ""

msgid "Warning"
msgstr ""

msgid "The marker was not dropped on a path."
msgstr ""

msgid "No routing found for this marker. Please move or delete it."
msgstr ""

msgid "No certification"
msgstr ""

Expand Down
11 changes: 10 additions & 1 deletion geotrek/core/locale/es/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-03 15:39+0000\n"
"POT-Creation-Date: 2024-05-28 14:23+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down Expand Up @@ -311,6 +311,15 @@ msgstr ""
msgid "Cancel"
msgstr ""

msgid "Warning"
msgstr ""

msgid "The marker was not dropped on a path."
msgstr ""

msgid "No routing found for this marker. Please move or delete it."
msgstr ""

msgid "No certification"
msgstr ""

Expand Down
11 changes: 10 additions & 1 deletion geotrek/core/locale/fr/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-03 15:39+0000\n"
"POT-Creation-Date: 2024-05-28 14:23+0000\n"
"PO-Revision-Date: 2020-09-23 07:10+0000\n"
"Last-Translator: Emmanuelle Helly <emmanuelle.helly@makina-corpus.com>\n"
"Language-Team: French <https://weblate.makina-corpus.net/projects/geotrek-"
Expand Down Expand Up @@ -316,6 +316,15 @@ msgstr "Fusionner les tronçons"
msgid "Cancel"
msgstr "Annuler"

msgid "Warning"
msgstr "Attention"

msgid "The marker was not dropped on a path."
msgstr "Le marqueur n'a pas été déposé sur un tronçon."

msgid "No routing found for this marker. Please move or delete it."
msgstr "Aucun routage n'a été trouvé pour ce marqueur. Veuillez le déplacer ou le supprimer."

msgid "No certification"
msgstr "Aucune labellisation"

Expand Down
Loading
Loading