Compare commits

...

31 commits

Author SHA1 Message Date
C-Sophie
15c2b4ac11
Merge 103cedf0bf into 6945a5e867 2025-04-16 13:00:59 +02:00
Yohan Boniface
6945a5e867
feat: pass CSRF_TRUSTED_ORIGINS env to settings (#2656)
Some checks are pending
Release Charts / release (push) Waiting to run
Test & Docs / tests (postgresql, 3.10) (push) Waiting to run
Test & Docs / tests (postgresql, 3.12) (push) Waiting to run
Test & Docs / lint (push) Waiting to run
Allow to manage djangos CSRF_TRUSTED_ORIGINS by environment variables.

Closes #2655
2025-04-16 12:34:49 +02:00
Oliver Lippert
2ed890202e
code formatting 2025-04-16 12:25:17 +02:00
Oliver Lippert
cc7685ca3f
pass CSRF_TRUSTED_ORIGINS env to settings
fixes https://github.com/umap-project/umap/issues/2655
2025-04-16 12:23:09 +02:00
David Larlet
23688b6444
feat: implement a design system for UI consistency (#2654)
Some checks are pending
Release Charts / release (push) Waiting to run
Test & Docs / tests (postgresql, 3.10) (push) Waiting to run
Test & Docs / tests (postgresql, 3.12) (push) Waiting to run
Test & Docs / lint (push) Waiting to run
2025-04-15 08:19:31 -04:00
David Larlet
d3c0947fa5
feat: implement a design system for UI consistency 2025-04-14 23:20:55 -04:00
Yohan Boniface
a135e5c3e1
chore: bump pytest-django from 4.10.0 to 4.11.1 (#2653)
Some checks are pending
Release Charts / release (push) Waiting to run
Test & Docs / tests (postgresql, 3.10) (push) Waiting to run
Test & Docs / tests (postgresql, 3.12) (push) Waiting to run
Test & Docs / lint (push) Waiting to run
2025-04-14 19:50:30 +02:00
Yohan Boniface
2ad46046f8
chore: bump uvicorn from 0.34.0 to 0.34.1 (#2651) 2025-04-14 19:50:14 +02:00
Yohan Boniface
5271d7c19d
chore: bump pydantic from 2.11.2 to 2.11.3 (#2652) 2025-04-14 19:36:42 +02:00
Yohan Boniface
a535c86f6b
chore: bump mkdocs-material from 9.6.10 to 9.6.11 (#2649) 2025-04-14 19:36:16 +02:00
Yohan Boniface
9aa1f58dc8
chore: bump pillow from 11.1.0 to 11.2.1 (#2650)
Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.1.0 to
11.2.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/python-pillow/Pillow/releases">pillow's
releases</a>.</em></p>
<blockquote>
<h2>11.2.1</h2>
<p><a
href="https://pillow.readthedocs.io/en/stable/releasenotes/11.2.1.html">https://pillow.readthedocs.io/en/stable/releasenotes/11.2.1.html</a></p>
<h2>Deprecations</h2>
<ul>
<li>Moved get_child_images() to ImageFile <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8689">#8689</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
</ul>
<h2>Documentation</h2>
<ul>
<li>Add 11.2.1 release notes <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8885">#8885</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added avif to config settings <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8875">#8875</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added release notes for <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8330">#8330</a>
<a
href="https://redirect.github.com/python-pillow/Pillow/issues/8853">#8853</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added release notes for <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8781">#8781</a>
and <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8837">#8837</a>
<a
href="https://redirect.github.com/python-pillow/Pillow/issues/8843">#8843</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added media_white_point to ImageCms documentation <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8829">#8829</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Removed FIXME <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8825">#8825</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated comment <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8822">#8822</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added release notes for <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8807">#8807</a>
<a
href="https://redirect.github.com/python-pillow/Pillow/issues/8824">#8824</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>DXT3 images are read in RGBA mode <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8817">#8817</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>JPEG comments are from the COM marker <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8788">#8788</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update Sphinx to 8.2 to remove nitpick ignore <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8763">#8763</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated AffineTransform docstring to mention it uses the inverse
matrix <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8735">#8735</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added MozJPEG documentation <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8699">#8699</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added Sphinx configuration key <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8691">#8691</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated macOS tested Pillow versions <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8654">#8654</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
</ul>
<h2>Dependencies</h2>
<ul>
<li>Updated xz to 5.8.1 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8868">#8868</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated harfbuzz to 11.0.1 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8870">#8870</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update scientific-python/upload-nightly-action action to v0.6.2 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8865">#8865</a>
[@<a href="https://github.com/apps/renovate">renovate[bot]</a>]</li>
<li>Updated xz to 5.8.0 in macOS and Linux wheels, but not on
manylinux2014 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8836">#8836</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update dependency cibuildwheel to v2.23.2 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8832">#8832</a>
[@<a href="https://github.com/apps/renovate">renovate[bot]</a>]</li>
<li>Updated harfbuzz to 11.0.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8830">#8830</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update dependency cibuildwheel to v2.23.1 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8818">#8818</a>
[@<a href="https://github.com/apps/renovate">renovate[bot]</a>]</li>
<li>Updated Ghostscript to 10.5.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8814">#8814</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated libtiff to 4.7.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8812">#8812</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>[pre-commit.ci] pre-commit autoupdate <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8795">#8795</a>
[@<a
href="https://github.com/apps/pre-commit-ci">pre-commit-ci[bot]</a>]</li>
<li>Updated harfbuzz to 10.4.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8770">#8770</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update dependency mypy to v1.15.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8791">#8791</a>
[@<a href="https://github.com/apps/renovate">renovate[bot]</a>]</li>
<li>Updated libpng to 1.6.47 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8764">#8764</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated lcms2 to 2.17 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8742">#8742</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update dependency cibuildwheel to v2.23.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8785">#8785</a>
[@<a href="https://github.com/apps/renovate">renovate[bot]</a>]</li>
<li>Updated zlib-ng to 2.2.4 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8745">#8745</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated libimagequant to 4.3.4 on Windows <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8744">#8744</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>[pre-commit.ci] pre-commit autoupdate <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8729">#8729</a>
[@<a
href="https://github.com/apps/pre-commit-ci">pre-commit-ci[bot]</a>]</li>
<li>Updated harfbuzz to 10.2.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8688">#8688</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated xz to 5.6.4 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8711">#8711</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated libpng to 1.6.46 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8712">#8712</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated libimagequant to 4.3.4 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8710">#8710</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated libpng to 1.6.45 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8670">#8670</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst">pillow's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog (Pillow)</h1>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="339bc5db93"><code>339bc5d</code></a>
11.2.1 version bump</li>
<li><a
href="857b8846ea"><code>857b884</code></a>
Merge pull request <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8885">#8885</a>
from radarhere/releasenotes</li>
<li><a
href="7a0092f207"><code>7a0092f</code></a>
Remove incomplete 11.2.0 release, bill as 11.2.1 instead</li>
<li><a
href="d52c2db317"><code>d52c2db</code></a>
Do not include libavif in wheels</li>
<li><a
href="8dafc38371"><code>8dafc38</code></a>
Added 11.2.1 release notes</li>
<li><a
href="07d7800248"><code>07d7800</code></a>
Removed release notes update</li>
<li><a
href="04909483a7"><code>0490948</code></a>
Remove GPL v2 license (<a
href="https://redirect.github.com/python-pillow/Pillow/issues/8884">#8884</a>)</li>
<li><a
href="774d0aedce"><code>774d0ae</code></a>
Merge pull request <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8868">#8868</a>
from radarhere/xz_upgrade</li>
<li><a
href="d1e27fc86c"><code>d1e27fc</code></a>
Merge pull request <a
href="https://redirect.github.com/python-pillow/Pillow/issues/8870">#8870</a>
from radarhere/harfbuzz_upgrade</li>
<li><a
href="c8d98d56a0"><code>c8d98d5</code></a>
Added avif to config settings (<a
href="https://redirect.github.com/python-pillow/Pillow/issues/8875">#8875</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/python-pillow/Pillow/compare/11.1.0...11.2.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pillow&package-manager=pip&previous-version=11.1.0&new-version=11.2.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2025-04-14 19:36:00 +02:00
dependabot[bot]
102104f818
chore: bump pytest-django from 4.10.0 to 4.11.1
Bumps [pytest-django](https://github.com/pytest-dev/pytest-django) from 4.10.0 to 4.11.1.
- [Release notes](https://github.com/pytest-dev/pytest-django/releases)
- [Changelog](https://github.com/pytest-dev/pytest-django/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pytest-dev/pytest-django/compare/v4.10.0...v4.11.1)

---
updated-dependencies:
- dependency-name: pytest-django
  dependency-version: 4.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 17:30:01 +00:00
dependabot[bot]
35e5a4bda6
chore: bump pydantic from 2.11.2 to 2.11.3
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.2 to 2.11.3.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v2.11.2...v2.11.3)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-version: 2.11.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 17:29:38 +00:00
dependabot[bot]
6bae315efe
chore: bump uvicorn from 0.34.0 to 0.34.1
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.34.0 to 0.34.1.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.34.0...0.34.1)

---
updated-dependencies:
- dependency-name: uvicorn
  dependency-version: 0.34.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 17:29:19 +00:00
dependabot[bot]
93120d91d6
chore: bump pillow from 11.1.0 to 11.2.1
Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.1.0 to 11.2.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/11.1.0...11.2.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 11.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 17:29:05 +00:00
dependabot[bot]
f037973a03
chore: bump mkdocs-material from 9.6.10 to 9.6.11
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.10 to 9.6.11.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.10...9.6.11)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 17:28:43 +00:00
Yohan Boniface
c4614354ae 3.0.4 2025-04-14 17:57:12 +02:00
Yohan Boniface
9ed466ea9b
chore: update colors (#2647) 2025-04-14 17:55:19 +02:00
Yohan Boniface
168cc0c996 i18n 2025-04-14 17:49:09 +02:00
Yohan Boniface
ae4e7eb3e2 chore: update colors
Co-authored-by: David Larlet <david@larlet.fr>
2025-04-14 17:45:11 +02:00
Yohan Boniface
3670b7dca6
Adapt chart to match La Suite's expectations (#2646)
- env vars and config files can be loaded from existing secrets
- chart is deployed on a helm repository

to make the helm repository work with github pages, create an empty
orphaned branch called gh-pages, and under settings>pages>source select
deploy from branch and use gh-pages
2025-04-14 17:36:31 +02:00
David Larlet
1c3cf9a7c5
chore: switch helm chart job to master branch 2025-04-14 11:31:06 -04:00
Yohan Boniface
ada44fc0fc
fix: remove "hide home button" shown twice in map settings (#2645) 2025-04-14 17:30:52 +02:00
Yohan Boniface
ac6964c9f4 fix: remove "hide home button" shown twice in map settings
Co-authored-by: David Larlet <david@larlet.fr>
2025-04-14 16:30:38 +02:00
David Larlet
82dcd90405
fix: do not show "back to home" button in iframes (#2644) 2025-04-14 10:21:21 -04:00
Yohan Boniface
d9e983aed4 fix: do not show "back to home" button in iframes
Co-authored-by: David Larlet <david@larlet.fr>
2025-04-14 16:12:35 +02:00
Oscar Hemelaar
8f3f67588a
chore: deploy charts to repository under github pages 2025-01-29 16:22:25 +01:00
Oscar Hemelaar
e97b619da8
feat: allow configuring env and conf using existing secret
useful for when the secret is created out of band using a vault api for
example
2025-01-29 15:49:05 +01:00
David Larlet
103cedf0bf
Update 6-one-click-data-import.md (#2252)
Add cadastre and specify that the cadastre is reserved for the instance
uMap ANCT
2024-11-08 11:46:30 -05:00
C-Sophie
4cbb2e1491
Update 6-one-click-data-import.md
Add cadastre and specify that the cadastre is reserved for the instance uMap ANCT
2024-11-08 09:52:43 +01:00
C-Sophie
c53eae5878
Update 6-one-click-data-import.md
Add the cadastre
2024-11-06 18:44:26 +01:00
22 changed files with 349 additions and 83 deletions

26
.github/workflows/release-helm.yml vendored Normal file
View file

@ -0,0 +1,26 @@
name: Release Charts
on:
push:
branches:
- master
jobs:
release:
# depending on default permission settings for your org (contents being read-only or read-write for workloads), you will have to add permissions
# see: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Publish Helm charts
uses: stefanprodan/helm-gh-pages@v1.7.0
with:
charts_dir: charts
linting: off
token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -66,7 +66,11 @@ spec:
{{- end }}
envFrom:
- secretRef:
{{- if .Values.umap.envFromSecret }}
name: {{ .Values.umap.envFromSecret }}
{{- else }}
name: {{ include "umap.fullname" . }}-env
{{- end }}
volumeMounts:
- name: config
mountPath: /etc/umap/
@ -80,7 +84,11 @@ spec:
volumes:
- name: config
secret:
{{- if .Values.umap.configFromSecret }}
secretName: {{ .Values.umap.configFromSecret }}
{{- else }}
secretName: {{ include "umap.fullname" . }}-config
{{- end }}
- name: statics
emptyDir: {}
{{- if .Values.persistence.enabled }}

View file

@ -1,3 +1,4 @@
{{ if not .Values.umap.configFromSecret }}
apiVersion: v1
kind: Secret
metadata:
@ -6,4 +7,5 @@ metadata:
{{- include "umap.labels" . | nindent 4 }}
type: Opaque
data:
umap.conf: {{ .Values.umap.config | b64enc }}
umap.conf: {{ .Values.umap.config | b64enc }}
{{- end }}

View file

@ -1,3 +1,4 @@
{{ if not .Values.umap.envFromSecret }}
apiVersion: v1
kind: Secret
metadata:
@ -8,4 +9,5 @@ type: Opaque
data:
{{- range $key, $value := .Values.umap.environment }}
{{ $key }}: "{{ $value | b64enc }}"
{{- end }}
{{- end }}
{{- end }}

View file

@ -77,11 +77,18 @@ umap:
SECRET_KEY: CHANGE_ME
STATIC_ROOT: /srv/umap/static
MEDIA_ROOT: /srv/umap/uploads
# Configure environment variables using an existing secret in the same namespace.
# In this case the values above are not used
envFromSecret: null
# You can also provide umap.conf content here:
config: |
from umap.settings.base import *
# See: https://github.com/umap-project/umap/blob/master/umap/settings/local.py.sample
# Configure config file using an existing secret in the same namespace.
# In this case the values above are not used
configFromSecret: null
persistence:
enabled: true

View file

@ -1,6 +1,7 @@
!!! abstract "Ce que nous allons apprendre"
- Importer le contour dune commune
- Importer le cadastre [sur l'instance uMap pour les agents publics](https://umap.incubateur.anct.gouv.fr/fr/)
- Importer les contours des départements ou des régions
- Importer un point dintérêt (bibliothèques, parkings, …) qui est enregistré sur OpenStreetMap
@ -15,12 +16,20 @@ Voilà les deux actions à effectuer une fois une carte préexistante, ou une no
uMap permet dutiliser des données produites par de nombreux services et placées en open data sous différents formats. Nous verrons ultérieurement (niveau intermédiaire) où rechercher ces sources. Dores et déjà, vous pouvez utiliser lassistant dimportation pour récupérer en un clic des contours administratifs et des points dintérêt.
### Ressources disponibles (20/09/2024)
### Ressources disponibles (05/11/2024)
Au 20 septembre 2024, les imports suivants sont disponibles :
Au 5 novembre 2024, les imports suivants sont disponibles :
- contour dune commune
- contours des départements et des régions
- contour dune commune : limites communales jointives, issues du Référentiel à Grande Échelle (RGE), mises à jour par l'IGN ;
- cadastre, sur l'instance uMap pour les agents publics :
- Parcelles
- Bâtiments
- Communes (attention ce périmètre est moins précis, privilégier celui issu du RGE ci-dessus)
- Feuilles
- Lieux-dits
- Préfixes des sections
- Subdivisions fiscales.
- contours des départements et des régions ;
- données issues dOpenStreetMap placées dans [GeoDataMine](https://geodatamine.fr/). Comme son nom lindique, GeoDataMine est une véritable mine de données très utiles pour les services publics :
- Aire de jeux
- Aménagements cyclables
@ -43,7 +52,7 @@ Au 20 septembre 2024, les imports suivants sont disponibles :
Voici un bref passage en revu des différents imports proposés et pour finir limport de la localisation des bibliothèques de Clermont- Ferrand :
![Gif animé montrant lusage de lassistant dimport](../../static/tutoriels/importer.gif)
![Import en un clic](https://github.com/user-attachments/assets/f53e52bf-b229-40ac-b76c-526ffa8728d5)
## 1. Importer le contour dune commune
@ -58,30 +67,53 @@ Cliquez sur « Communes France » et sélectionnez la commune souhaitée dans
Le code affiché nest pas le code postal mais le code INSEE de la commune.
Voici le résultat avec la commune dArles (la plus vaste de France métropolitaine, un gain certain si on fait léconomie de dessiner son contour !)
![Une carte avec le dessin de la commune dArles importée](../../static/tutoriels/importer-arles.png)
![Import en un clic](https://github.com/user-attachments/assets/241f4244-60da-44d2-a8a3-1d57e22860b8)
Une fois cet import réalisé, tout est réglable : couleur de contour, de fond, affichage oui non dune étiquette.
## 2. Importer les contours des départements ou des régions
## 2. Importer le cadastre
Cliquez sur loutil dimportation en bas de la barre de droite, puis descendez jusquau cadre « Assistants dimport ».
Cliquez sur « Cadastre », choisir l'objet du cadastre à importer, par défaut, les parcelles sont proposées. Sélectionner une commune, choisir le type de calque et cliquez sur "Importer".
![cadastre1](https://github.com/user-attachments/assets/d9a407f6-1b70-4738-8fde-2a9c9ced8de3)
Pour régler l'épaisseur du trait et l'opacité du fond, cliquer dans la barre de droite sur "Gérer les calques", puis sur le petit stylo ("Editer") et enfin dans les "propriétés de la forme" :
![cadastre2](https://github.com/user-attachments/assets/99cf8395-a69a-411c-a2b2-4de8c50ec960)
On obtient une couche d'information moins chargée, ce qui permet d'ajouter d'autres données :
![cadastre3](https://github.com/user-attachments/assets/474ca77d-d63d-421a-be60-67aaa334f7d0)
Sur cet exemple, l'identifiant s'affiche au survol d'une parcelle avec la souris. Pour obtenir cet affichage, cliquer sur les "Propriétés avancées" du calque, juste en dessous des "Propriétés de la forme", puis dans "Clé pour le libellé", indiquer id. C'est en effet le nom donné dans le tableau de données à la colonne qui accueille l'identifiant des parcelles.
!!! note
Il est tout à fait possible d'utiliser le cadastre comme fond de carte. Dans ce cas, la méthode est différente, voir la fiche tuto [Où trouver des données](https://discover.umap-project.org/fr/tutorials/4-find-data/)
## 3. Importer les contours des départements ou des régions
Cliquez sur loutil dimportation en bas de la barre de droite, puis cliquez sur le lien « Assistants dimport ».
Cliquez sur « Contours nationaux » puis soit départements, soit régions et enfin le type de calque (voir supra lexplication). Tous les départements sont importés :
![Une carte avec le dessin de chaque département importé](../../static/tutoriels/importer-departements.png)
![départements](https://github.com/user-attachments/assets/b4adbb47-ef2d-45e3-baec-c850d8b51d32)
## 3. Importer un point dintérêt issu de GeoDataMine
## 4. Importer un point dintérêt issu de GeoDataMine
Cliquez sur loutil dimportation en bas de la barre de droite, puis cliquez sur le lien « Assistants dimport ».
Cliquez sur « GeoDataMine (thèmes OSM) » et sélectionnez les informations souhaitées, routes, bâtiments, commerces, services publics, …
Par exemple, en sélectionnant les points deau potable de la CA du Grand Avignon, puis « Copier dans un calque »
Par exemple, en sélectionnant les points deau potable de la CA du Grand Avignon, puis « Copier dans un calque » ou « Associer comme données distantes » (dans ce dernier cas, la carte se mettra automatiquement à jour lorsque le jeu de données changera).
![Une carte avec les points deau potable issus dOpenStreetMap](../../static/tutoriels/importer-geodatamine.png)
![Grand Avignon](https://github.com/user-attachments/assets/ab7a697a-9280-4e5f-8825-aaa0e99c036d)
Voici une réelle économie de temps plutôt que de placer pointeur après pointeur tous les points deau.
## 4. La carte combinée
## 5. La carte combinée
Bien entendu, on peut tout à fait combiner les différentes couches dinformation et présenter par exemple la carte des Points deau potable dans la CA du Grand Avignon, avec les contours des communes qui composent lEPCI, du département et de la région :
@ -89,7 +121,7 @@ Bien entendu, on peut tout à fait combiner les différentes couches dinforma
![Une carte combinant plusieurs imports](../../static/tutoriels/importer-multi.png)
[Voir la carte en plein écran](https://umap.openstreetmap.fr/fr/map/points-deau-potable-grand-avignon_1116739?scaleControl=false&miniMap=false&scrollWheelZoom=true&zoomControl=true&editMode=disabled&moreControl=true&searchControl=null&tilelayersControl=null&embedControl=null&datalayersControl=true&onLoadPanel=none&captionBar=false&captionMenus=true#11/43.9889/4.7962){ .md-button }
[Voir la carte en plein écran](https://umap.incubateur.anct.gouv.fr/fr/map/points-deau-potable-grand-avignon_672)
Il faudra dans ce cas supprimer toutes les informations inutiles dans le tableau de données qui est accessible dans la barre de gauche pour chaque calque.

View file

@ -1,5 +1,5 @@
# Force rtfd to use a recent version of mkdocs
mkdocs==1.6.1
pymdown-extensions==10.14.3
mkdocs-material==9.6.10
mkdocs-material==9.6.11
mkdocs-static-i18n==1.3.0

View file

@ -1,5 +1,13 @@
# Changelog
## 3.0.4 - 2025-04-14
* do not show "back to home" button in iframes by @yohanboniface in #2644
* remove "hide home button" shown twice in map settings by @yohanboniface in #2645
* adapt Helm chart to match La Suite's expectations by @ohemelaar in #2646
* update colors by @yohanboniface in #2647
## 3.0.3 - 2025-04-11
* do not try to remove a feature not yet added by @yohanboniface in #2637

View file

@ -1,5 +1,5 @@
# Force rtfd to use a recent version of mkdocs
mkdocs==1.6.1
pymdown-extensions==10.14.3
mkdocs-material==9.6.10
mkdocs-material==9.6.11
mkdocs-static-i18n==1.3.0

View file

@ -32,7 +32,7 @@ dependencies = [
"django-agnocomplete==2.2.0",
"django-environ==0.12.0",
"django-probes==1.7.0",
"Pillow==11.1.0",
"Pillow==11.2.1",
"psycopg==3.2.6",
"requests==2.32.3",
"rcssmin==1.2.1",
@ -47,7 +47,7 @@ dev = [
"ruff==0.11.4",
"djlint==1.36.4",
"mkdocs==1.6.1",
"mkdocs-material==9.6.10",
"mkdocs-material==9.6.11",
"mkdocs-static-i18n==1.3.0",
"vermin==1.6.0",
"pymdown-extensions==10.14.3",
@ -58,20 +58,20 @@ test = [
"factory-boy==3.3.3",
"playwright>=1.39",
"pytest==8.3.5",
"pytest-django==4.10.0",
"pytest-django==4.11.1",
"pytest-playwright==0.7.0",
"pytest-rerunfailures==15.0",
"pytest-xdist>=3.5.0,<4",
"moto[s3]==5.1.3"
]
docker = [
"uvicorn==0.34.0",
"uvicorn==0.34.1",
]
s3 = [
"django-storages[s3]==1.14.6",
]
sync = [
"pydantic==2.11.2",
"pydantic==2.11.3",
"redis==5.2.1",
"websockets==15.0.1",
]

View file

@ -1 +1 @@
VERSION = "3.0.3"
VERSION = "3.0.4"

View file

@ -19,6 +19,7 @@ env = environ.Env()
INTERNAL_IPS = env.list("INTERNAL_IPS", default=["127.0.0.1"])
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=["*"])
CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS", default=[])
ADMINS = tuple(parseaddr(email) for email in env.list("ADMINS", default=[]))
ASGI_APPLICATION = "umap.asgi.application"

View file

@ -6,7 +6,7 @@ input[type="text"], input[type="password"], input[type="date"],
input[type="datetime-local"], input[type="email"], input[type="number"],
input[type="search"], input[type="tel"], input[type="time"], input[type="file"],
input[type="url"], textarea {
background-color: white;
background-color: var(--color-light);
border: 2px solid var(--color-darkBlue);
color: var(--text-color);
display: block;
@ -47,7 +47,7 @@ input[type=checkbox]:checked:after {
}
input[data-modified=true] {
background-color: var(--color-lightCyan);
border: 1px solid var(--color-darkGray);
border: 1px solid var(--color-veryDarkGray);
}
input + select,
select + input,
@ -71,7 +71,7 @@ select {
.dark select {
color: var(--text-color);
background-color: var(--color-darkGray);
border-color: var(--color-dark);
border-color: var(--color-veryDarkGray);
border-width: 1px;
}
select[multiple="multiple"] {
@ -89,7 +89,7 @@ input[type="submit"] {
text-decoration: none;
justify-content: center;
background-color: var(--color-darkBlue);
color: white;
color: var(--color-light);
font-weight: normal;
min-height: 40px;
}
@ -97,21 +97,21 @@ input[type="submit"] {
.dark [type="button"] {
background-color: var(--color-darkerGray);
color: var(--text-color);
border: 1px solid #1b1f20;
border: 1px solid var(--color-veryDarkGray);
}
.button.primary {
font-weight: bold;
}
.dark .button.primary:not([disabled]),
.dark [type="button"].primary:not([disabled]) {
background-color: var(--color-brightCyan);
background-color: var(--color-verySoftCyan);
color: var(--color-dark);
border: 1px solid #1b1f20;
border: 1px solid var(--color-veryDarkGray);
}
.dark .button:hover,
.dark [type="button"]:hover,
.dark input[type="submit"]:hover {
background-color: #2e3436;
background-color: var(--color-darkerGray);
}
.dark a {
color: var(--text-color);
@ -151,14 +151,14 @@ button.round.small {
display: block;
padding: 7px 7px;
margin-bottom: 14px;
background: #393F3F;
background: var(--color-mediumGray);
color: var(--color-lightGray);
font-size: 10px;
border-radius: 0 2px;
}
.content .helptext {
background-color: #eee;
color: #000;
background-color: var(--color-lightGray);
color: var(--color-dark);
}
input + .help-text {
margin-top: -14px;
@ -205,8 +205,8 @@ input + .error {
margin-top: -14px;
margin-bottom: 14px;
background: var(--color-lightGray);
color: #fff;
background-color: #cc0000;
color: var(--color-light);
background-color: var(--color-red);
font-size: 11px;
border-radius: 0 2px;
}
@ -214,14 +214,14 @@ input[type="file"] + .error {
margin-top: 0;
}
input[value]:invalid {
border-color: red;
background-color: darkred;
border-color: var(--color-red);
background-color: var(--color-darkRed);
}
.dark input, .dark textarea {
background-color: var(--color-darkerGray);
border-color: var(--color-dark);
border-color: var(--color-veryDarkGray);
border-width: 1px;
color: #efefef;
color: var(--color-lightGray);
}
details {
margin-bottom: 5px;
@ -229,7 +229,7 @@ details {
border-start-end-radius: 4px;
}
.dark details {
border: 1px solid #222;
border: 1px solid var(--color-veryDarkGray);
}
details fieldset {
overflow: hidden;
@ -245,8 +245,8 @@ details summary {
padding: 0 5px;
}
.dark details summary {
background-color: #232729;
color: #fff;
background-color: var(--color-darkerGray);
color: var(--color-light);
}
.dark details fieldset {
border: 1px solid var(--color-darkGray);
@ -311,33 +311,34 @@ input.switch:empty ~ label:after {
width: 6em;
-webkit-transition: all 100ms ease-in;
transition: all 100ms ease-in;
color: #c9c9c7;
color: var(--color-mediumGray);
font-weight: bold;
background-color: #ededed;
background-color: var(--color-lighterGray);
}
.dark input.switch:empty ~ label:before,
.dark input.switch:empty ~ label:after {
background-color: #272c2e;
background-color: var(--color-darkerGray);
}
input.switch:empty ~ label:after {
width: 3em;
margin-inline-start: 0.1em;
background-color: #ededed;
background-color: var(--color-lightGray);
content: "OFF";
text-indent: 3.5em;
border: 1px solid #374E75;
border: 1px solid var(--color-darkerGray);
font-weight: bold;
}
.dark input.switch:empty ~ label:after {
border: 1px solid #202425;
background-color: #2c3233;
border: 1px solid var(--color-veryDarkGray);
background-color: var(--color-darkerGray);
color: var(--color-lightGray);
}
input.switch:checked:empty ~ label:after {
content: ' ';
}
.dark input.switch:checked ~ label:before,
input.switch:checked ~ label:before {
background-color: var(--color-lightCyan);
background-color: var(--color-verySoftCyan);
border: 1px solid var(--color-lightGray);
color: var(--color-darkGray);
content: "ON";
@ -347,7 +348,7 @@ input.switch:checked ~ label:before {
}
.dark input.switch:checked ~ label:before {
border: none;
background-color: var(--color-accent);
background-color: var(--color-verySoftCyan);
}
input.switch:checked ~ label:after {
margin-inline-start: 3em;
@ -387,9 +388,9 @@ input.switch:checked ~ label:after {
display: none;
}
.umap-multiplechoice label {
border: 1px solid #374E75;
border: 1px solid var(--color-veryDarkGray);
cursor: pointer;
background-color: #c9c9c7;
background-color: var(--color-lightGray);
min-height: 30px;
line-height: 30px;
text-align: center;
@ -397,12 +398,11 @@ input.switch:checked ~ label:after {
display: inline-block;
}
.dark .umap-multiplechoice label {
border: 1px solid black;
background-color: #2c3233;
border: 1px solid var(--color-veryDarkGray);
background-color: var(--color-darkGray);
}
.umap-multiplechoice input[type='radio']:checked + label {
background-color: var(--color-accent);
box-shadow: inset 0 0 6px 0px #2c3233;
background-color: var(--color-verySoftCyan);
color: var(--color-darkGray);
}
.inheritable .header .buttons {
@ -420,7 +420,7 @@ input.switch:checked ~ label:after {
width: initial;
}
.inheritable + .inheritable {
border-top: 1px solid #222;
border-top: 1px solid var(--color-darkerGray);
padding-top: 5px;
margin-top: 5px;
}
@ -504,7 +504,7 @@ i.info {
justify-content: space-around;
font-size: 1.2em;
margin-bottom: 20px;
border-bottom: 1px solid #bebebe;
border-bottom: 1px solid var(--color-lighterGray);
}
.flat-tabs button {
padding: 10px;
@ -515,14 +515,14 @@ i.info {
.flat-tabs button:hover,
.flat-tabs .on {
font-weight: bold;
border-bottom: 1px solid #444;
border-bottom: 1px solid var(--color-mediumGray);
}
.dark .flat-tabs button {
color: #fff;
color: var(--color-light);
}
.dark .flat-tabs button:hover,
.dark .flat-tabs .on {
border-bottom: 1px solid #fff;
border-bottom: 1px solid var(--color-light);
}
.umap-pictogram-category h6 {
font-size: 1.3em;
@ -538,11 +538,11 @@ i.info {
height: 30px;
line-height: 30px;
cursor: pointer;
background-color: #999;
background-color: var(--color-lightGray);
text-align: center;
margin-bottom: 5px;
display: inline-block;
color: black;
color: var(--color-dark);
font-weight: bold;
overflow: hidden;
}
@ -552,10 +552,10 @@ i.info {
}
.umap-pictogram-choice:hover,
.umap-color-picker span:hover {
background-color: #bebebe;
background-color: var(--color-lighterGray);
}
.umap-pictogram-choice.selected {
box-shadow: inset 0 0 0 1px #e9e9e9;
box-shadow: inset 0 0 0 1px var(--color-lighterGray);
}
.umap-pictogram-choice .leaflet-marker-icon {

View file

@ -108,7 +108,7 @@ export default class Umap {
// Do not display in an iframe.
if (window.self !== window.top) {
geojson.properties.homeControl = false
this.properties.homeControl = false
}
this._leafletMap.setup()
@ -833,7 +833,6 @@ export default class Umap {
UIFields.push(`properties.${name}Control`)
}
UIFields = UIFields.concat([
'properties.homeControl',
'properties.moreControl',
'properties.scrollWheelZoom',
'properties.miniMap',

View file

@ -457,7 +457,6 @@ const locale = {
"Choose this dataset": "Choose this dataset",
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
"Choose a theme": "Choose a theme",
"Symplify all geometries to points": "Symplify all geometries to points",
"Choose this data": "Choose this data",
"Search admin boundary": "Search admin boundary",
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
@ -522,10 +521,10 @@ const locale = {
"Anonymous": "Anonymous",
"created at {date}": "created at {date}",
"modified at {date}": "modified at {date}",
"Default zoom": "Default zoom",
"Default latitude": "Default latitude",
"Default longitude": "Default longitude",
"Edit map default view": "Edit map default view",
"Default zoom": "Zoom predeterminat",
"Default latitude": "Latitud predeterminada",
"Default longitude": "Longitud predeterminada",
"Edit map default view": "Edita la visualització predeterminada del mapa",
"Use current center and zoom": "Use current center and zoom",
"Layer permalink": "Layer permalink",
"Back to home": "Back to home",
@ -538,7 +537,10 @@ const locale = {
"Images": "Images",
"Iframes": "Iframes",
"Tags": "Tags",
"Geocode": "Geocode"
"Geocode": "Geocode",
"Display the back to home icon": "Display the back to home icon",
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
"Simplify all geometries to points": "Simplify all geometries to points"
}
L.registerLocale("ca", locale)
L.setLocale("ca")

View file

@ -457,7 +457,6 @@
"Choose this dataset": "Choose this dataset",
"GeoDataMine: thematic data from OpenStreetMap": "GeoDataMine: thematic data from OpenStreetMap",
"Choose a theme": "Choose a theme",
"Symplify all geometries to points": "Symplify all geometries to points",
"Choose this data": "Choose this data",
"Search admin boundary": "Search admin boundary",
"Please choose a theme and a boundary first.": "Please choose a theme and a boundary first.",
@ -522,10 +521,10 @@
"Anonymous": "Anonymous",
"created at {date}": "created at {date}",
"modified at {date}": "modified at {date}",
"Default zoom": "Default zoom",
"Default latitude": "Default latitude",
"Default longitude": "Default longitude",
"Edit map default view": "Edit map default view",
"Default zoom": "Zoom predeterminat",
"Default latitude": "Latitud predeterminada",
"Default longitude": "Longitud predeterminada",
"Edit map default view": "Edita la visualització predeterminada del mapa",
"Use current center and zoom": "Use current center and zoom",
"Layer permalink": "Layer permalink",
"Back to home": "Back to home",
@ -538,5 +537,8 @@
"Images": "Images",
"Iframes": "Iframes",
"Tags": "Tags",
"Geocode": "Geocode"
"Geocode": "Geocode",
"Display the back to home icon": "Display the back to home icon",
"Do you want to display layer switcher in caption bar?": "Do you want to display layer switcher in caption bar?",
"Simplify all geometries to points": "Simplify all geometries to points"
}

View file

@ -990,9 +990,9 @@ a.umap-control-caption,
height: var(--control-size);
line-height: var(--control-size);
}
/* Links are blue by default */
/* Links are dark cyan by default */
.leaflet-container a {
color: #0078a8;
color: var(--color-veryDarkCyan);
}
/* But not in controls */
.leaflet-bar a {

View file

@ -6,12 +6,15 @@
--color-mediumGray: #3e4444;
--color-darkGray: #323737;
--color-darkerGray: #2a2e30;
--color-veryDarkGray: #1e2121;
--color-light: white;
--color-dark: black;
--color-limeGreen: #b9f5d2;
--color-verySoftCyan: #a1eeeb;
--color-brightCyan: #46ece6;
--color-lightCyan: #d4fbf9;
--color-darkCyan: #009099;
--color-veryDarkCyan: #046460;
--color-red: #c60f13;
--color-darkRed: #5b2a2a;
@ -64,6 +67,7 @@
.dark {
--background-color: var(--color-darkGray);
--text-color: #efefef;
--color-verySoftCyan: #8cdcd9;
}
@media only screen and (max-width:770px) {

View file

@ -0,0 +1,140 @@
{% extends "umap/content.html" %}
{% load umap_tags i18n %}
{% block messages %}
{# We don't want to display errors (yet?). #}
{% endblock messages %}
{% block extra_head %}
{{ block.super }}
<style type="text/css">
h3, h4 {
margin-top: 2rem;
}
.colors-container {
display: flex;
flex-wrap: wrap;
}
.colors-container * {
width: 20%;
margin: 1rem;
border-style: solid;
border-width: 2rem 1px 1px 1px;
padding: 4px;
}
.panel {
position: initial;
padding: 0 1rem 1rem;
}
</style>
{% endblock extra_head %}
{% block maincontent %}
<div class="wrapper">
<h2 class="section">uMap Design System</h2>
<div class="row">
<h3>Forms</h3>
<h4>Copiable link</h4>
<div class="copiable-input">
<label>Lien vers la carte<input type="text" readonly value="http://example.org"></label><button class="icon icon-24 icon-copy" title="copier" type="button"></button>
</div>
<h4>Toggle</h4>
<div class="formbox">
<input type="checkbox" class="switch" id="inBbox"><label for="inBbox">Lister seulement les éléments visibles</label>
</div>
<h4>Multiple choice</h4>
<div class="formbox">
<label title="Afficher les boutons de zoom">Afficher les boutons de zoom</label>
<div class="umap-multiplechoice by3">
<input type="radio" name="zoomControl" id="zoomControl.0" value="true" checked><label for="zoomControl.0">toujours</label>
<input type="radio" name="zoomControl" id="zoomControl.1" value="false"><label for="zoomControl.1">jamais</label>
<input type="radio" name="zoomControl" id="zoomControl.2" value="null"><label for="zoomControl.2">caché</label>
</div>
</div>
<h4>Select</h4>
<div class="formbox">
<label>Voulez-vous afficher un panneau latéral au chargement ?</label>
<select name="onLoadPanel">
<option value="none">Aucun</option>
<option value="caption">Légende</option>
<option value="databrowser">Explorateur : données</option>
</select>
</div>
<h4>You want it darker…</h4>
<div class="panel dark full on">
<h3><i class="icon icon-16 icon-settings" title=""></i><span>Titre avec icône</span></h3>
<details open="">
<summary><span>Options d'interface</span></summary>
<fieldset>
<form>
<div class="formbox">
<input type="checkbox" name="homeControl" data-ref="input" class="switch" id="homeControl">
<label title="Afficher le bouton de retour à l'accueil" for="homeControl">Afficher le bouton de retour à l'accueil</label>
</div>
<div class="formbox">
<label title="Afficher les boutons de zoom">Afficher les boutons de zoom</label>
<div class="umap-multiplechoice by3" data-ref="wrapper">
<input type="radio" name="zoomControl" id="zoomControl.0" value="true"><label for="zoomControl.0">toujours</label>
<input type="radio" name="zoomControl" id="zoomControl.1" value="false" checked><label for="zoomControl.1">jamais</label>
<input type="radio" name="zoomControl" id="zoomControl.2" value="null"><label for="zoomControl.2">caché</label>
</div>
</div>
<div class="formbox">
<label title="Voulez-vous afficher un panneau latéral au chargement ?">Voulez-vous afficher un panneau latéral au chargement ?</label>
<select name="onLoadPanel">
<option value="none">Aucun</option>
<option value="caption">Légende</option>
<option value="databrowser">Explorateur : données</option>
</select>
</div>
</form>
</fieldset>
</details>
<details open="">
<summary><span>Actions avancées</span></summary>
<fieldset>
<div class="button-bar half">
<button class="button" type="button">
<i class="icon icon-24 icon-delete"></i>Supprimer
</button>
<button class="button" type="button">
<i class="icon icon-24 icon-empty"></i>Effacer les données
</button>
<button class="button" type="button">
<i class="icon icon-24 icon-empty"></i>Supprimer les calques
</button>
<button class="button" type="button">
<i class="icon icon-24 icon-clone"></i>Cloner cette carte
</button>
<button class="button" type="button">
<i class="icon icon-24 icon-download"></i>Ouvrir le panneau de partage
</button>
</div>
</fieldset>
</details>
</div>
<h3>Colors</h3>
<div class="grid-container row colors-container"></div>
</div>
</div>
{% endblock maincontent %}
{% block bottom_js %}
{{ block.super }}
<script type="text/javascript">
const colorsContainer = document.querySelector('.colors-container')
const styles = getComputedStyle(document.querySelector('html'))
let html = ""
for (const style of styles) {
if (style.startsWith("--") && style.includes("color")) {
const value = styles.getPropertyValue(style)
html += `<div style="border-color: ${value};">${style}</div>`
}
}
const template = document.createElement('template')
template.innerHTML = html
colorsContainer.appendChild(template.content)
</script>
{% endblock bottom_js %}

View file

@ -0,0 +1,25 @@
from playwright.sync_api import expect
def test_home_control_is_hidden(live_server, map, tilelayer, page):
body = f"""
<html>
<head></head>
<body>
<iframe width="100%" height="300px" frameborder="0" allowfullscreen allow="geolocation"
src="{map.get_absolute_url()}?scaleControl=false&miniMap=false&scrollWheelZoom=false&zoomControl=true&editMode=disabled&moreControl=true&searchControl=null&tilelayersControl=null&embedControl=null&datalayersControl=true&onLoadPanel=caption&captionBar=false&captionMenus=true"></iframe>
</body>
</html>
"""
def handle(route):
route.fulfill(body=body)
url = f"{live_server.url}/test-iframe"
# Intercept the route
page.route(url, handle)
page.goto(url)
expect(
page.locator("iframe").content_frame.get_by_role("link", name="Home logo")
).to_be_hidden()

View file

@ -205,6 +205,7 @@ urlpatterns += i18n_patterns(
)
urlpatterns += (
path("stats/", cache_page(60 * 60)(views.stats), name="stats"),
path("design_system/", views.design_system, name="design_system"),
path(
"favicon.ico",
cache_control(max_age=60 * 60 * 24, immutable=True, public=True)(

View file

@ -1410,6 +1410,13 @@ def stats(request):
)
class DesignSystem(TemplateView):
template_name = "umap/design_system.html"
design_system = DesignSystem.as_view()
@require_GET
@cache_control(max_age=60 * 60 * 24, immutable=True, public=True) # One day.
def webmanifest(request):