Commit graph

70 commits

Author SHA1 Message Date
Yohan Boniface
a04624c4c8 feat: support storing layer data in S3 like servers
fix #2290
2024-12-10 18:51:58 +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
David Larlet
d159fdc2cb
feat: add a setting to prevent users from editing their profile
In some situations, the profile comes from the OAuth provider and shouldn’t be modified by users.
2024-09-12 14:23:50 -04:00
David Larlet
2a2a4be357
lint: fix imports order 2024-08-30 12:34:04 -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
6b6be017bb wip: use autocomplete to add users in groups 2024-08-29 20:12:24 +02:00
Yohan Boniface
eccbbda44d wip: add basic tests for group views 2024-08-29 20:12:24 +02:00
Yohan Boniface
9b2a99019b wip: add very basic CRUD for groups 2024-08-29 20:12:24 +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
f255c3c8a5 feat(websockets): Authenticate with signed tokens.
Authentication is now done using a signed token provided by the Django
server, sent by the JS client and checked by the WebSocket server.

The token contains a `permissions` key that's checked to ensure the user
has access to the map "room", where events will be shared by the peers.
2024-06-07 18:21:30 +02:00
99d7b8a6e1 chore: ruff format 2024-02-26 15:01:19 +01:00
d18a32b5d3 chore: use path rather than re_path in urls.py 2024-02-26 15:01:19 +01:00
c5fd72fe2b chore: use Django JSON serializer when calling json.dumps 2024-02-26 15:01:19 +01:00
c46f59e3dd chore: Use datalayers' UUIDs in the views 2024-02-26 15:01:19 +01:00
Yohan Boniface
1db2455d51 chore: replace settings.FROM_EMAIL by settings.DEFAULT_FROM_EMAIL
DEFAULT_FROM_EMAIL is a Django standard setting
2024-02-16 11:49:38 +01:00
David Larlet
afdc732204
Merge pull request #1430 from umap-project/download-all-from-dashboard
Ability to clone, delete and download all maps from user’s dashboard
2024-02-08 09:51:01 -05:00
David Larlet
5476cbee0f
Ability to download all maps from user’s dashboard 2024-02-07 12:32:00 -05:00
Yohan Boniface
c334f7554e feat: add experimental "map preview"
This is the same as "map new", but it is not in edit mode. This
allow to click on the elements and see the popups instead of editing
it when using a `dataUrl` query string.
This way of using uMap is not documented, but it's used by some
partners (Deveco recently, data.gouv.fr historicaly).

In the same time, this PR adds two things:
- possibility to pass data direclty in querystring (instead of an URL):
  in the case of Deveco, they have pages where only point is shown (for
  each company)
- possibility to pass style options directly from query string: may
  allow for example to control the `popupTemplate`, eg. to use a table
  one that will display all properties of the clicked feature

Note: dataUrl and such also works in normal "map new" view. There are
two use cases around those parameters, from external sites:
- see this data on uMap (should point on map preview)
- create a map with those data (should point on map new)
2024-02-07 13:57:20 +01:00
Yohan Boniface
49f600adfa wip: refactor login flow
Instead of dealing with in JavaScript, let's do a more classic
HTTP flow.

The main flows work, but there is still at least one to deal with:
when editing a map without being logged in, the server may ask for
login, and in this case we should login THEN reissue the request,
so we need to interrupt the first request in some way,
otherwise the server will still answer with a 403, which is what
happens after this commit.
2024-02-05 07:22:53 +01:00
David Larlet
df76ffd80e
feat: Create an oEmbed endpoint for maps
Fix #162
2024-01-11 15:08:10 -05:00
aff0181636 [style] Format the code 2023-11-24 23:31:18 +01:00
Yohan Boniface
be0cefd02a
Merge pull request #1396 from umap-project/backup-api
Full map download endpoint
2023-11-15 15:39:36 +01:00
David Larlet
6f73038f92
Redirect favicon.ico and dynamic webmanifest 2023-11-14 22:50:25 -05:00
David Larlet
915d6b6db4
Set a default favicon 2023-11-14 17:32:40 -05:00
David Larlet
0be42d39cb
Full map download endpoint 2023-11-14 12:07:17 -05:00
Yohan Boniface
3d2e62c858 Do not use Map.edit_status anymore
But keep it for now, for data migration, and just in case
2023-09-22 17:26:55 +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
2b471be171 Very lite "My Profile" page to allow changing username 2023-08-21 15:09:30 +02:00
Yohan Boniface
4d0ced9a98 Add very basic user dashboard 2023-07-12 09:09:01 +02:00
Yohan Boniface
81fcc080d9 Allow to customize user display name and URL slug 2023-06-16 14:59:59 +02:00
Yohan Boniface
e0760ca403 Only ask to send edit link if email has been set up 2023-05-31 17:20:22 +02:00
Yohan Boniface
69bf6593ac (WIP) Add a button to send edit link by email in anonymous mode 2023-05-31 14:50:43 +02:00
David Larlet
deb0ab09d3 Add one hour cache to the stats view 2023-05-23 11:51:54 -04:00
David Larlet
9d752ea306 Add a very basic /stats/ JSON view
Will be useful to feed munin for instance.
2023-05-22 17:47:04 -04:00
Yohan Boniface
40f40038f8 Fix url order for retrieving user stars
Since that initial PR, the username regex has been more gready.
2023-05-15 12:22:28 +02:00
Yohan Boniface
8c113d9a19 Rename MapStar view in ToggleMapStarStatus 2023-05-15 12:22:28 +02:00
Yohan Boniface
37b4d05da5 (WIP) Allow to star map and retrieve starred maps 2023-05-15 12:22:26 +02:00
Yohan Boniface
cfcb83dbfb black on urls.py 2023-02-23 11:10:24 +01:00
Yohan Boniface
2fc30b117b Prepare for Django 4.x 2023-02-22 15:19:38 +01:00
Yohan Boniface
1200b82838 First attempt to upgrade to Django 3.X
Bloqued by https://github.com/peopledoc/django-agnocomplete/issues/119
2021-05-17 10:51:24 +02:00
Yohan Boniface
2ba7a057f3 Be more liberal about username regex in URL
fix #774
2020-03-25 15:11:11 +01:00
Yohan Boniface
d63e92fee8 Upgrade to Django 2.1 2018-08-15 17:42:51 +02:00
Yohan Boniface
1a815b313d Add an explicit button to attach an owner to an anonymous map
fix #568
2018-07-07 16:44:40 +02:00
Yohan Boniface
ac8b68b0e5 Remove OldMapUrl 2018-06-15 23:31:45 +02:00
Yohan Boniface
48185650b0 Move permissions form building to JS 2018-06-15 23:25:38 +02:00
Yohan Boniface
a7ec9b173d Add a basic language switcher in the home footer
fix #74
2018-06-02 19:04:32 +02:00
Yohan Boniface
1ef5e13f48 Remove duplicate short_url declarations 2018-05-19 12:01:53 +02:00
Yohan Boniface
cb470198e6 Merge leaflet_storage locales 2018-05-19 11:12:19 +02:00
Yohan Boniface
e55d03bd5e Django 2.0
And update other deps
2018-05-19 10:05:18 +02:00