Commit graph

70 commits

Author SHA1 Message Date
Yohan Boniface
5084c11434 chore: add basic tests for S3 storage 2024-12-03 18:07:50 +01:00
Yohan Boniface
250d8c38d6 feat: support storing layer data in S3 like servers
fix #2290
2024-12-03 18:07:50 +01:00
7dadb83ff5 feat(sync): Let the clients set layers UUID
This make it possible to synchronize datalayers before their creation on
the server, allowing at the same time to solve issues related to them
not being saved (e.g. duplication of geometries)

We use the DataLayer._referenceVersion to track if a DataLayer has been
saved on the server.

After a save, the _referenceVersion is synched with other peers.

To pass the reference version from the server to the frontend, we have two
options:
- use a header
- populate the `options.version` field

In the case of a GET on a Datalayer, we could not use the `options` scenario
because:
- the value in the file is not up to date (it was the value the client has
 before the save)
- the python cannot change it on the fly, as the file is served by nginx

So we decided to keep using a header. But on the map view, we load all
datalayers metadatas in the map options, so here we cannot use the header
scenario, so in this specific case we had to populate `options._referenceVersion`.

At the same time, we also changed:
- Umap.options.umap_id => Umap.id
- DataLayer.umap_id => Datalayer.id
- fixed the version number returned by DataLayer.version_metadata
2024-11-15 15:22:36 +01:00
Yohan Boniface
c6c255e216 chore: use shutil.move instead of Path.rename to move to purgatory
Otherwise it will fail if src and dest are not on the same FS.
2024-10-22 12:14:04 +02:00
Yohan Boniface
49eb121c68 feat: delete datalayer's files on delete
Until now, uMap was not deleting files on delete, which can increase
file storage a lot after some time.

The files are not deleted, but moved to a "purgatory" folder, from
where they can be deleted after some time.
2024-09-23 09:56:20 +02:00
Yohan Boniface
5f67c9c229 fix: do not call teams.all() on anonymous user
In the same move, refactor the can_edit/_view/_delete functions to
only take the request, which is what really happen in the code, and
adapt the test in that way.
2024-09-10 17:56:14 +02:00
David Larlet
c6ebfd4363
fix: proper way to test if we have a user 2024-08-30 12:37:48 -04:00
David Larlet
a877dd1714
chore: remove logo_url from Team model 2024-08-30 10:55:26 -04:00
Yohan Boniface
13735a5739 chore: use our own Team model
We suppose we'll quickly want more than a name, like a description
or a logo_url, and maybe a access_status or permissions…
2024-08-30 15:53:18 +02:00
Yohan Boniface
a3e972bf5d wip: add group maps page and display group as author when defined 2024-08-29 20:12:22 +02:00
Yohan Boniface
dce0ee5f73 wip: use auth.models.Group and manage permissions 2024-08-29 20:11:19 +02:00
66eb90ffd1 chore(sync): Move the sync flag in the options
The goal being for it to be hidden for now.

- Add a `is_owner` method on the map and use it in the view
- Remove duplicated line in `global.js`
- Rename `Datalayer` to `DataLayer` everywhere
- Move the sync flag in the map options (next to slideshow)
2024-06-07 18:21:30 +02:00
ee3dbb85ca doc: update cookie-related comment 2024-06-07 18:21:30 +02:00
Yohan Boniface
453056cb15 feat: remove Map.description
The field was not populated since years, and we already have the
info inside the JSONB `settings`.
2024-04-24 16:39:59 +02:00
Yohan Boniface
62e7e3c01a
Merge pull request #1755 from umap-project/browser-no-control
fix: make sure we do not render browser in map fragment
2024-04-17 18:33:54 +02:00
Yohan Boniface
d743ffeea0 fix: increase TileLayer.url_template size
fix #255
2024-04-17 11:19:31 +02:00
Yohan Boniface
99d5165fcf fix: make sure we do not render browser in map fragment
There was an edge case when map has "dataLayersControl=expanded":
we only overrided "onLoadPanel", so dataLayersControl was still
considerer. Let's have a more generic stop.
2024-04-17 08:27:58 +02:00
Yohan Boniface
90ced76a11 fix: honour old_id in datalayers= query string parameter
fix #1714
2024-03-27 22:10:38 +01:00
Yohan Boniface
99207638d9 fix: make sure to order datalayer versions by time
When we changed from id to uuid, we broke the sorting, which
supposed to have a constant id as string prefix from version to
the other.
2024-03-25 20:13:34 +01:00
Yohan Boniface
6396ee5e58
Merge pull request #1661 from umap-project/schema-i18n
Add minimal schema module
2024-03-05 17:57:40 +01:00
1b41ff0ddc chore: Rename datalayer id to old_id 2024-03-05 11:23:12 +01:00
Yohan Boniface
e7bd94a099 wip: do not expose UMAP_SCHEMA for now 2024-03-04 17:43:40 +01:00
Yohan Boniface
a7a854dd74 wip: move default options to schema
This commit also introduce a new settings UMAP_SCHEMA, that could
be used to easily override schema default, like the default color, the
default path weigth and so on. I'm not documenting yet, because I'm
not yet totally sure we want this.
2024-03-04 17:43:40 +01:00
ff4870730a chore: ensure old-format layers' versions are returned 2024-02-26 15:01:19 +01:00
99d7b8a6e1 chore: ruff format 2024-02-26 15:01:19 +01:00
f869d77f2c chore: update migrations 2024-02-26 15:01:19 +01:00
c46f59e3dd chore: Use datalayers' UUIDs in the views 2024-02-26 15:01:19 +01:00
6b7efda37a chore: replace datalayer ids with uuids 2024-02-26 15:01:19 +01:00
David Larlet
5d69d3c22f
Provide a link to delete maps from user’s dashboard 2024-02-07 12:32:00 -05:00
David Larlet
5476cbee0f
Ability to download all maps from user’s dashboard 2024-02-07 12:32:00 -05:00
Yohan Boniface
ab966722f9 wip: rework request error flow 2024-02-05 07:22:53 +01:00
Yohan Boniface
256d6c631c feat: use svg for default icon (circle)
fix #1560
2024-01-29 12:24:16 +01:00
David Larlet
8d11815625
Move _urls_for_js to utils.py (circular imports) 2023-12-27 11:41:08 -05:00
David Larlet
7ff543e1d5
Create the unique_id in the template (vs. model) 2023-12-27 11:41:08 -05:00
David Larlet
c9b4b96c01
Preview map only on click in user’s dashboard
Refs #1459
2023-12-27 11:41:07 -05:00
396cbd34b4 build: Update makefile testjs to open the browser 2023-12-18 08:16:17 +00:00
aff0181636 [style] Format the code 2023-11-24 23:31:18 +01:00
Yohan Boniface
8c774fb7b3 Add Pictogram.category and list pictos grouped by category 2023-10-30 21:07:55 +01:00
Yohan Boniface
b6aa201397 Use FileField instead of ImageField for pictogram to allow SVG 2023-10-30 12:45:05 +01:00
Yohan Boniface
495dd6444f Finally add Map.create_at field
This field should have been added at the beginning, but this is
like planting trees, isn't it ?
2023-09-27 11:01:50 +02:00
Yohan Boniface
a04acb828d Update Map.can_edit docstring 2023-09-22 17:32:19 +02:00
Yohan Boniface
4e54a93ee0 Add DataLayer.INHERIT edit status option 2023-09-22 17:32:19 +02:00
Yohan Boniface
3cbd6cca40 Add back Map.edit_status
Revert "Fix existing permissions related tests"

This reverts commit 36d7d87301.

WIP
2023-09-22 17:32:19 +02:00
Yohan Boniface
24e4aed8d3 Rename allowEdit in editMode 2023-09-22 17:32:17 +02:00
Yohan Boniface
42eb0e6ded Add more tests for datalayer permissions 2023-09-22 17:30:06 +02:00
Yohan Boniface
89ab029cab WIP: move edit_status from Map to DataLayer 2023-09-22 17:25:55 +02:00
Yohan Boniface
73d19e849f Refactor share_status check in datalayers views 2023-09-22 17:24:01 +02:00
Yohan Boniface
b6b9943264 Prune old .gz when saving a datalayer
We'll not consume them.

fix #1317
2023-09-21 19:12:07 +02:00
Yohan Boniface
fa090b89df Store DataLayer's settings in DB
This allows to known the full datalayer behaviour without needing
to load all the data, including the zoom from and to (new settings),
but also the color for example.

This will help also understanding datalayers usage and making
stats.

But no data migration is provided, it's retrocompatible (data
migration in OSM FR servers would be huge, so let's see if it's
really needed).
2023-08-20 09:48:01 +02:00
Yohan Boniface
0c3dc02fc1 Allow to configure default share and edit status
fix #1244
2023-08-07 08:16:49 +02:00