umap-project 2.7.3__py3-none-any.whl → 2.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- umap/__init__.py +1 -1
- umap/forms.py +4 -14
- umap/locale/am_ET/LC_MESSAGES/django.mo +0 -0
- umap/locale/am_ET/LC_MESSAGES/django.po +278 -151
- umap/locale/ar/LC_MESSAGES/django.mo +0 -0
- umap/locale/ar/LC_MESSAGES/django.po +335 -141
- umap/locale/bg/LC_MESSAGES/django.mo +0 -0
- umap/locale/bg/LC_MESSAGES/django.po +279 -152
- umap/locale/br/LC_MESSAGES/django.mo +0 -0
- umap/locale/br/LC_MESSAGES/django.po +95 -79
- umap/locale/ca/LC_MESSAGES/django.mo +0 -0
- umap/locale/ca/LC_MESSAGES/django.po +85 -68
- umap/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
- umap/locale/cs_CZ/LC_MESSAGES/django.po +78 -66
- umap/locale/da/LC_MESSAGES/django.mo +0 -0
- umap/locale/da/LC_MESSAGES/django.po +280 -153
- umap/locale/de/LC_MESSAGES/django.mo +0 -0
- umap/locale/de/LC_MESSAGES/django.po +80 -64
- umap/locale/el/LC_MESSAGES/django.mo +0 -0
- umap/locale/el/LC_MESSAGES/django.po +82 -66
- umap/locale/en/LC_MESSAGES/django.po +73 -61
- umap/locale/es/LC_MESSAGES/django.mo +0 -0
- umap/locale/es/LC_MESSAGES/django.po +75 -63
- umap/locale/et/LC_MESSAGES/django.mo +0 -0
- umap/locale/et/LC_MESSAGES/django.po +280 -153
- umap/locale/eu/LC_MESSAGES/django.mo +0 -0
- umap/locale/eu/LC_MESSAGES/django.po +82 -66
- umap/locale/fa_IR/LC_MESSAGES/django.mo +0 -0
- umap/locale/fa_IR/LC_MESSAGES/django.po +80 -64
- umap/locale/fi/LC_MESSAGES/django.mo +0 -0
- umap/locale/fi/LC_MESSAGES/django.po +278 -151
- umap/locale/fr/LC_MESSAGES/django.mo +0 -0
- umap/locale/fr/LC_MESSAGES/django.po +75 -63
- umap/locale/gl/LC_MESSAGES/django.mo +0 -0
- umap/locale/gl/LC_MESSAGES/django.po +280 -153
- umap/locale/he/LC_MESSAGES/django.mo +0 -0
- umap/locale/he/LC_MESSAGES/django.po +281 -154
- umap/locale/hu/LC_MESSAGES/django.mo +0 -0
- umap/locale/hu/LC_MESSAGES/django.po +80 -64
- umap/locale/is/LC_MESSAGES/django.mo +0 -0
- umap/locale/is/LC_MESSAGES/django.po +280 -153
- umap/locale/it/LC_MESSAGES/django.mo +0 -0
- umap/locale/it/LC_MESSAGES/django.po +82 -66
- umap/locale/ja/LC_MESSAGES/django.mo +0 -0
- umap/locale/ja/LC_MESSAGES/django.po +280 -153
- umap/locale/ko/LC_MESSAGES/django.mo +0 -0
- umap/locale/ko/LC_MESSAGES/django.po +280 -153
- umap/locale/lt/LC_MESSAGES/django.mo +0 -0
- umap/locale/lt/LC_MESSAGES/django.po +280 -153
- umap/locale/ms/LC_MESSAGES/django.mo +0 -0
- umap/locale/ms/LC_MESSAGES/django.po +82 -66
- umap/locale/nl/LC_MESSAGES/django.mo +0 -0
- umap/locale/nl/LC_MESSAGES/django.po +280 -153
- umap/locale/pl/LC_MESSAGES/django.mo +0 -0
- umap/locale/pl/LC_MESSAGES/django.po +82 -66
- umap/locale/pt/LC_MESSAGES/django.mo +0 -0
- umap/locale/pt/LC_MESSAGES/django.po +75 -63
- umap/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- umap/locale/pt_BR/LC_MESSAGES/django.po +280 -153
- umap/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- umap/locale/pt_PT/LC_MESSAGES/django.po +280 -153
- umap/locale/ru/LC_MESSAGES/django.mo +0 -0
- umap/locale/ru/LC_MESSAGES/django.po +280 -153
- umap/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- umap/locale/sk_SK/LC_MESSAGES/django.po +280 -153
- umap/locale/sl/LC_MESSAGES/django.mo +0 -0
- umap/locale/sl/LC_MESSAGES/django.po +280 -153
- umap/locale/sr/LC_MESSAGES/django.mo +0 -0
- umap/locale/sr/LC_MESSAGES/django.po +280 -153
- umap/locale/sv/LC_MESSAGES/django.mo +0 -0
- umap/locale/sv/LC_MESSAGES/django.po +81 -65
- umap/locale/th_TH/LC_MESSAGES/django.mo +0 -0
- umap/locale/th_TH/LC_MESSAGES/django.po +257 -185
- umap/locale/tr/LC_MESSAGES/django.mo +0 -0
- umap/locale/tr/LC_MESSAGES/django.po +280 -153
- umap/locale/uk_UA/LC_MESSAGES/django.mo +0 -0
- umap/locale/uk_UA/LC_MESSAGES/django.po +280 -153
- umap/locale/vi/LC_MESSAGES/django.mo +0 -0
- umap/locale/vi/LC_MESSAGES/django.po +278 -151
- umap/locale/zh/LC_MESSAGES/django.mo +0 -0
- umap/locale/zh/LC_MESSAGES/django.po +278 -151
- umap/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
- umap/locale/zh_TW/LC_MESSAGES/django.po +97 -81
- umap/management/commands/empty_trash.py +35 -0
- umap/management/commands/migrate_to_S3.py +29 -0
- umap/migrations/0023_alter_datalayer_uuid.py +19 -0
- umap/migrations/0024_alter_map_share_status.py +30 -0
- umap/migrations/0025_alter_datalayer_geojson.py +24 -0
- umap/models.py +68 -116
- umap/settings/base.py +23 -3
- umap/settings/local_s3.py +45 -0
- umap/static/umap/base.css +3 -603
- umap/static/umap/content.css +5 -3
- umap/static/umap/css/bar.css +202 -0
- umap/static/umap/css/form.css +620 -0
- umap/static/umap/css/icon.css +21 -1
- umap/static/umap/css/popup.css +125 -0
- umap/static/umap/img/16-white.svg +16 -4
- umap/static/umap/img/16.svg +1 -1
- umap/static/umap/img/source/16-white.svg +46 -45
- umap/static/umap/img/source/16.svg +1 -753
- umap/static/umap/js/components/fragment.js +3 -1
- umap/static/umap/js/modules/browser.js +20 -19
- umap/static/umap/js/modules/caption.js +21 -22
- umap/static/umap/js/modules/data/features.js +120 -78
- umap/static/umap/js/modules/data/layer.js +195 -153
- umap/static/umap/js/modules/facets.js +9 -9
- umap/static/umap/js/modules/formatter.js +5 -5
- umap/static/umap/js/modules/global.js +4 -52
- umap/static/umap/js/modules/help.js +18 -21
- umap/static/umap/js/modules/importer.js +133 -56
- umap/static/umap/js/modules/importers/cadastrefr.js +4 -0
- umap/static/umap/js/modules/importers/geodatamine.js +3 -3
- umap/static/umap/js/modules/importers/overpass.js +5 -0
- umap/static/umap/js/modules/permissions.js +85 -87
- umap/static/umap/js/modules/rendering/icon.js +2 -1
- umap/static/umap/js/modules/rendering/layers/base.js +15 -15
- umap/static/umap/js/modules/rendering/layers/classified.js +1 -1
- umap/static/umap/js/modules/rendering/layers/cluster.js +1 -1
- umap/static/umap/js/modules/rendering/layers/heat.js +1 -1
- umap/static/umap/js/modules/rendering/map.js +390 -0
- umap/static/umap/js/modules/rendering/popup.js +19 -19
- umap/static/umap/js/modules/rendering/template.js +88 -21
- umap/static/umap/js/modules/rendering/ui.js +63 -14
- umap/static/umap/js/modules/request.js +2 -2
- umap/static/umap/js/modules/rules.js +22 -25
- umap/static/umap/js/modules/saving.js +47 -0
- umap/static/umap/js/modules/schema.js +6 -0
- umap/static/umap/js/modules/share.js +21 -24
- umap/static/umap/js/modules/slideshow.js +24 -20
- umap/static/umap/js/modules/sync/updaters.js +7 -9
- umap/static/umap/js/modules/tableeditor.js +20 -19
- umap/static/umap/js/modules/ui/bar.js +196 -0
- umap/static/umap/js/modules/ui/dialog.js +5 -0
- umap/static/umap/js/modules/ui/panel.js +10 -9
- umap/static/umap/js/modules/umap.js +1691 -0
- umap/static/umap/js/modules/urls.js +2 -2
- umap/static/umap/js/modules/utils.js +22 -6
- umap/static/umap/js/umap.controls.js +81 -305
- umap/static/umap/js/umap.core.js +29 -50
- umap/static/umap/js/umap.forms.js +78 -27
- umap/static/umap/keycloak.png +0 -0
- umap/static/umap/locale/am_ET.js +26 -10
- umap/static/umap/locale/am_ET.json +26 -10
- umap/static/umap/locale/ar.js +26 -10
- umap/static/umap/locale/ar.json +26 -10
- umap/static/umap/locale/ast.js +26 -10
- umap/static/umap/locale/ast.json +26 -10
- umap/static/umap/locale/bg.js +26 -10
- umap/static/umap/locale/bg.json +26 -10
- umap/static/umap/locale/br.js +27 -20
- umap/static/umap/locale/br.json +27 -20
- umap/static/umap/locale/ca.js +32 -29
- umap/static/umap/locale/ca.json +32 -29
- umap/static/umap/locale/cs_CZ.js +24 -17
- umap/static/umap/locale/cs_CZ.json +24 -17
- umap/static/umap/locale/da.js +26 -10
- umap/static/umap/locale/da.json +26 -10
- umap/static/umap/locale/de.js +21 -14
- umap/static/umap/locale/de.json +21 -14
- umap/static/umap/locale/el.js +28 -12
- umap/static/umap/locale/el.json +28 -12
- umap/static/umap/locale/en.js +14 -9
- umap/static/umap/locale/en.json +14 -9
- umap/static/umap/locale/en_US.json +26 -10
- umap/static/umap/locale/es.js +16 -13
- umap/static/umap/locale/es.json +16 -13
- umap/static/umap/locale/et.js +26 -10
- umap/static/umap/locale/et.json +26 -10
- umap/static/umap/locale/eu.js +16 -9
- umap/static/umap/locale/eu.json +16 -9
- umap/static/umap/locale/fa_IR.js +16 -9
- umap/static/umap/locale/fa_IR.json +16 -9
- umap/static/umap/locale/fi.js +26 -10
- umap/static/umap/locale/fi.json +26 -10
- umap/static/umap/locale/fr.js +14 -9
- umap/static/umap/locale/fr.json +14 -9
- umap/static/umap/locale/gl.js +26 -10
- umap/static/umap/locale/gl.json +26 -10
- umap/static/umap/locale/he.js +26 -10
- umap/static/umap/locale/he.json +26 -10
- umap/static/umap/locale/hr.js +26 -10
- umap/static/umap/locale/hr.json +26 -10
- umap/static/umap/locale/hu.js +16 -9
- umap/static/umap/locale/hu.json +16 -9
- umap/static/umap/locale/id.js +26 -10
- umap/static/umap/locale/id.json +26 -10
- umap/static/umap/locale/is.js +26 -10
- umap/static/umap/locale/is.json +26 -10
- umap/static/umap/locale/it.js +26 -10
- umap/static/umap/locale/it.json +26 -10
- umap/static/umap/locale/ja.js +26 -10
- umap/static/umap/locale/ja.json +26 -10
- umap/static/umap/locale/ko.js +26 -10
- umap/static/umap/locale/ko.json +26 -10
- umap/static/umap/locale/lt.js +26 -10
- umap/static/umap/locale/lt.json +26 -10
- umap/static/umap/locale/ms.js +28 -12
- umap/static/umap/locale/ms.json +28 -12
- umap/static/umap/locale/nl.js +28 -12
- umap/static/umap/locale/nl.json +28 -12
- umap/static/umap/locale/no.js +26 -10
- umap/static/umap/locale/no.json +26 -10
- umap/static/umap/locale/pl.js +28 -12
- umap/static/umap/locale/pl.json +28 -12
- umap/static/umap/locale/pl_PL.json +26 -10
- umap/static/umap/locale/pt.js +16 -9
- umap/static/umap/locale/pt.json +16 -9
- umap/static/umap/locale/pt_BR.js +26 -10
- umap/static/umap/locale/pt_BR.json +26 -10
- umap/static/umap/locale/pt_PT.js +16 -9
- umap/static/umap/locale/pt_PT.json +16 -9
- umap/static/umap/locale/ro.js +26 -10
- umap/static/umap/locale/ro.json +26 -10
- umap/static/umap/locale/ru.js +26 -10
- umap/static/umap/locale/ru.json +26 -10
- umap/static/umap/locale/si.js +7 -7
- umap/static/umap/locale/si.json +7 -7
- umap/static/umap/locale/sk_SK.js +26 -10
- umap/static/umap/locale/sk_SK.json +26 -10
- umap/static/umap/locale/sl.js +26 -10
- umap/static/umap/locale/sl.json +26 -10
- umap/static/umap/locale/sr.js +26 -10
- umap/static/umap/locale/sr.json +26 -10
- umap/static/umap/locale/sv.js +27 -11
- umap/static/umap/locale/sv.json +27 -11
- umap/static/umap/locale/th_TH.js +28 -12
- umap/static/umap/locale/th_TH.json +28 -12
- umap/static/umap/locale/tr.js +26 -10
- umap/static/umap/locale/tr.json +26 -10
- umap/static/umap/locale/uk_UA.js +26 -10
- umap/static/umap/locale/uk_UA.json +26 -10
- umap/static/umap/locale/vi.js +26 -10
- umap/static/umap/locale/vi.json +26 -10
- umap/static/umap/locale/vi_VN.json +26 -10
- umap/static/umap/locale/zh.js +26 -10
- umap/static/umap/locale/zh.json +26 -10
- umap/static/umap/locale/zh_CN.json +26 -10
- umap/static/umap/locale/zh_TW.Big5.json +26 -10
- umap/static/umap/locale/zh_TW.js +34 -27
- umap/static/umap/locale/zh_TW.json +34 -27
- umap/static/umap/map.css +39 -530
- umap/static/umap/unittests/URLs.js +15 -15
- umap/static/umap/unittests/utils.js +23 -1
- umap/static/umap/vars.css +2 -1
- umap/static/umap/vendors/formbuilder/Leaflet.FormBuilder.js +5 -1
- umap/storage/__init__.py +3 -0
- umap/storage/fs.py +101 -0
- umap/storage/s3.py +61 -0
- umap/templates/base.html +2 -0
- umap/templates/registration/login.html +7 -6
- umap/templates/umap/components/alerts/alert.html +4 -0
- umap/templates/umap/css.html +6 -0
- umap/templates/umap/js.html +3 -2
- umap/templates/umap/map_init.html +6 -5
- umap/templates/umap/user_dashboard.html +20 -19
- umap/tests/base.py +5 -1
- umap/tests/fixtures/test_upload_simple_marker.json +19 -0
- umap/tests/integration/conftest.py +2 -1
- umap/tests/integration/test_anonymous_owned_map.py +18 -10
- umap/tests/integration/test_browser.py +16 -1
- umap/tests/integration/test_dashboard.py +1 -1
- umap/tests/integration/test_edit_datalayer.py +29 -7
- umap/tests/integration/test_import.py +28 -6
- umap/tests/integration/test_optimistic_merge.py +31 -8
- umap/tests/integration/test_owned_map.py +22 -16
- umap/tests/integration/test_popup.py +44 -0
- umap/tests/integration/test_save.py +35 -0
- umap/tests/integration/test_view_marker.py +12 -0
- umap/tests/integration/test_view_polyline.py +257 -0
- umap/tests/integration/test_websocket_sync.py +81 -9
- umap/tests/test_dashboard.py +82 -0
- umap/tests/test_datalayer.py +6 -7
- umap/tests/test_datalayer_s3.py +135 -0
- umap/tests/test_datalayer_views.py +28 -10
- umap/tests/test_empty_trash.py +34 -0
- umap/tests/test_map.py +12 -3
- umap/tests/test_map_views.py +69 -37
- umap/tests/test_statics.py +1 -1
- umap/tests/test_team_views.py +35 -1
- umap/tests/test_views.py +31 -52
- umap/urls.py +3 -3
- umap/views.py +126 -90
- {umap_project-2.7.3.dist-info → umap_project-2.8.0.dist-info}/METADATA +16 -13
- {umap_project-2.7.3.dist-info → umap_project-2.8.0.dist-info}/RECORD +289 -269
- umap/management/commands/purge_purgatory.py +0 -28
- umap/static/umap/js/umap.js +0 -1903
- umap/tests/test_purge_purgatory.py +0 -25
- /umap/{storage.py → storage/staticfiles.py} +0 -0
- {umap_project-2.7.3.dist-info → umap_project-2.8.0.dist-info}/WHEEL +0 -0
- {umap_project-2.7.3.dist-info → umap_project-2.8.0.dist-info}/entry_points.txt +0 -0
- {umap_project-2.7.3.dist-info → umap_project-2.8.0.dist-info}/licenses/LICENSE +0 -0
|
Binary file
|
|
@@ -15,7 +15,7 @@ msgid ""
|
|
|
15
15
|
msgstr ""
|
|
16
16
|
"Project-Id-Version: uMap\n"
|
|
17
17
|
"Report-Msgid-Bugs-To: \n"
|
|
18
|
-
"POT-Creation-Date: 2024-
|
|
18
|
+
"POT-Creation-Date: 2024-12-11 17:05+0000\n"
|
|
19
19
|
"PO-Revision-Date: 2013-11-22 14:00+0000\n"
|
|
20
20
|
"Last-Translator: Supaplex <bejokeup@gmail.com>, 2019,2023-2024\n"
|
|
21
21
|
"Language-Team: Chinese (Taiwan) (http://app.transifex.com/openstreetmap/umap/language/zh_TW/)\n"
|
|
@@ -25,127 +25,139 @@ msgstr ""
|
|
|
25
25
|
"Language: zh_TW\n"
|
|
26
26
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
27
27
|
|
|
28
|
-
#:
|
|
29
|
-
msgid "
|
|
30
|
-
msgstr "
|
|
31
|
-
|
|
32
|
-
#: forms.py:45 forms.py:71
|
|
33
|
-
msgid "Everyone can edit"
|
|
34
|
-
msgstr "所有人皆可編輯"
|
|
35
|
-
|
|
36
|
-
#: forms.py:69 models.py:423
|
|
37
|
-
msgid "Inherit"
|
|
38
|
-
msgstr "繼承"
|
|
28
|
+
#: admin.py:16
|
|
29
|
+
msgid "CSV Export"
|
|
30
|
+
msgstr "CSV 匯出"
|
|
39
31
|
|
|
40
32
|
#: middleware.py:13
|
|
41
33
|
msgid "Site is readonly for maintenance"
|
|
42
34
|
msgstr "網站目前因維護中設定為唯讀狀態"
|
|
43
35
|
|
|
44
|
-
#: models.py:
|
|
36
|
+
#: models.py:60 models.py:79
|
|
45
37
|
msgid "name"
|
|
46
38
|
msgstr "名稱"
|
|
47
39
|
|
|
48
|
-
#: models.py:
|
|
40
|
+
#: models.py:62 models.py:475
|
|
49
41
|
msgid "description"
|
|
50
42
|
msgstr "描述"
|
|
51
43
|
|
|
52
|
-
#: models.py:
|
|
44
|
+
#: models.py:110
|
|
53
45
|
msgid "details"
|
|
54
46
|
msgstr "詳情"
|
|
55
47
|
|
|
56
|
-
#: models.py:
|
|
48
|
+
#: models.py:111
|
|
57
49
|
msgid "Link to a page where the licence is detailed."
|
|
58
50
|
msgstr "連結至授權條款說明網址"
|
|
59
51
|
|
|
60
|
-
#: models.py:
|
|
52
|
+
#: models.py:121
|
|
61
53
|
msgid "URL template using OSM tile format"
|
|
62
54
|
msgstr "URL 樣板,使用 OSM 地圖磚格式"
|
|
63
55
|
|
|
64
|
-
#: models.py:
|
|
56
|
+
#: models.py:127
|
|
65
57
|
msgid "Order of the tilelayers in the edit box"
|
|
66
58
|
msgstr "編輯方塊中地圖磚的圖層順序"
|
|
67
59
|
|
|
68
|
-
#: models.py:
|
|
60
|
+
#: models.py:175 models.py:469
|
|
61
|
+
msgid "Only editable with secret edit link"
|
|
62
|
+
msgstr "僅能由私密連結編輯"
|
|
63
|
+
|
|
64
|
+
#: models.py:176 models.py:470
|
|
65
|
+
msgid "Everyone can edit"
|
|
66
|
+
msgstr "所有人皆可編輯"
|
|
67
|
+
|
|
68
|
+
#: models.py:179 models.py:463
|
|
69
69
|
msgid "Everyone"
|
|
70
70
|
msgstr "所有人"
|
|
71
71
|
|
|
72
|
-
#: models.py:
|
|
72
|
+
#: models.py:180 models.py:189 models.py:464
|
|
73
73
|
msgid "Editors and team only"
|
|
74
|
-
msgstr ""
|
|
74
|
+
msgstr "只有編輯者與團隊"
|
|
75
75
|
|
|
76
|
-
#: models.py:
|
|
76
|
+
#: models.py:181 models.py:465
|
|
77
77
|
msgid "Owner only"
|
|
78
78
|
msgstr "只有擁有者"
|
|
79
79
|
|
|
80
|
-
#: models.py:
|
|
80
|
+
#: models.py:184
|
|
81
|
+
msgid "Draft (private)"
|
|
82
|
+
msgstr ""
|
|
83
|
+
|
|
84
|
+
#: models.py:185
|
|
81
85
|
msgid "Everyone (public)"
|
|
82
86
|
msgstr "所有人 (公開)"
|
|
83
87
|
|
|
84
|
-
#: models.py:
|
|
88
|
+
#: models.py:188
|
|
85
89
|
msgid "Anyone with link"
|
|
86
90
|
msgstr "任何有連結的人"
|
|
87
91
|
|
|
88
|
-
#: models.py:
|
|
92
|
+
#: models.py:190
|
|
89
93
|
msgid "Blocked"
|
|
90
94
|
msgstr "已經封銷了"
|
|
91
95
|
|
|
92
|
-
#: models.py:
|
|
96
|
+
#: models.py:191
|
|
97
|
+
msgid "Deleted"
|
|
98
|
+
msgstr ""
|
|
99
|
+
|
|
100
|
+
#: models.py:194
|
|
93
101
|
msgid "center"
|
|
94
102
|
msgstr "中心"
|
|
95
103
|
|
|
96
|
-
#: models.py:
|
|
104
|
+
#: models.py:195
|
|
97
105
|
msgid "zoom"
|
|
98
106
|
msgstr "縮放"
|
|
99
107
|
|
|
100
|
-
#: models.py:
|
|
108
|
+
#: models.py:197
|
|
101
109
|
msgid "locate"
|
|
102
110
|
msgstr "定位"
|
|
103
111
|
|
|
104
|
-
#: models.py:
|
|
112
|
+
#: models.py:197
|
|
105
113
|
msgid "Locate user on load?"
|
|
106
114
|
msgstr "載入時使用定位功能?"
|
|
107
115
|
|
|
108
|
-
#: models.py:
|
|
116
|
+
#: models.py:201
|
|
109
117
|
msgid "Choose the map licence."
|
|
110
118
|
msgstr "選擇地圖授權"
|
|
111
119
|
|
|
112
|
-
#: models.py:
|
|
120
|
+
#: models.py:202
|
|
113
121
|
msgid "licence"
|
|
114
122
|
msgstr "授權"
|
|
115
123
|
|
|
116
|
-
#: models.py:
|
|
124
|
+
#: models.py:213
|
|
117
125
|
msgid "owner"
|
|
118
126
|
msgstr "擁有者"
|
|
119
127
|
|
|
120
|
-
#: models.py:
|
|
128
|
+
#: models.py:217
|
|
121
129
|
msgid "editors"
|
|
122
130
|
msgstr "編輯者"
|
|
123
131
|
|
|
124
|
-
#: models.py:
|
|
132
|
+
#: models.py:223
|
|
125
133
|
msgid "team"
|
|
126
|
-
msgstr ""
|
|
134
|
+
msgstr "團隊"
|
|
127
135
|
|
|
128
|
-
#: models.py:
|
|
136
|
+
#: models.py:229 models.py:491
|
|
129
137
|
msgid "edit status"
|
|
130
138
|
msgstr "編輯狀態"
|
|
131
139
|
|
|
132
|
-
#: models.py:
|
|
140
|
+
#: models.py:234
|
|
133
141
|
msgid "share status"
|
|
134
142
|
msgstr "分享狀態"
|
|
135
143
|
|
|
136
|
-
#: models.py:
|
|
144
|
+
#: models.py:237 models.py:486
|
|
137
145
|
msgid "settings"
|
|
138
146
|
msgstr "設定"
|
|
139
147
|
|
|
140
|
-
#: models.py:
|
|
148
|
+
#: models.py:402
|
|
141
149
|
msgid "Clone of"
|
|
142
150
|
msgstr "複製"
|
|
143
151
|
|
|
144
|
-
#: models.py:
|
|
152
|
+
#: models.py:462 models.py:468
|
|
153
|
+
msgid "Inherit"
|
|
154
|
+
msgstr "繼承"
|
|
155
|
+
|
|
156
|
+
#: models.py:481
|
|
145
157
|
msgid "display on load"
|
|
146
158
|
msgstr "載入時顯示"
|
|
147
159
|
|
|
148
|
-
#: models.py:
|
|
160
|
+
#: models.py:482
|
|
149
161
|
msgid "Display this layer on load."
|
|
150
162
|
msgstr "載入此圖層時顯示"
|
|
151
163
|
|
|
@@ -197,25 +209,29 @@ msgid ""
|
|
|
197
209
|
"them in your site."
|
|
198
210
|
msgstr "uMap 允許你在數分鐘內創建有開放街圖的圖層的地圖,並且能內嵌到你的網站。"
|
|
199
211
|
|
|
200
|
-
#: templates/registration/login.html:6 templates/registration/login.html:
|
|
212
|
+
#: templates/registration/login.html:6 templates/registration/login.html:46
|
|
201
213
|
msgid "Login"
|
|
202
214
|
msgstr "登入"
|
|
203
215
|
|
|
204
|
-
#: templates/registration/login.html:
|
|
205
|
-
msgid "
|
|
206
|
-
msgstr "
|
|
216
|
+
#: templates/registration/login.html:22
|
|
217
|
+
msgid "To save and easily find your maps, identify yourself."
|
|
218
|
+
msgstr ""
|
|
207
219
|
|
|
208
|
-
#: templates/registration/login.html:
|
|
220
|
+
#: templates/registration/login.html:25
|
|
221
|
+
msgid "Please log in with your account:"
|
|
222
|
+
msgstr ""
|
|
223
|
+
|
|
224
|
+
#: templates/registration/login.html:42
|
|
209
225
|
msgid "Username"
|
|
210
226
|
msgstr "使用者名稱"
|
|
211
227
|
|
|
212
|
-
#: templates/registration/login.html:
|
|
228
|
+
#: templates/registration/login.html:45
|
|
213
229
|
msgid "Password"
|
|
214
230
|
msgstr "密碼"
|
|
215
231
|
|
|
216
|
-
#: templates/registration/login.html:
|
|
217
|
-
msgid "Please choose a provider"
|
|
218
|
-
msgstr "
|
|
232
|
+
#: templates/registration/login.html:52
|
|
233
|
+
msgid "Please choose a provider:"
|
|
234
|
+
msgstr ""
|
|
219
235
|
|
|
220
236
|
#: templates/umap/about_summary.html:12
|
|
221
237
|
#, python-format
|
|
@@ -329,19 +345,19 @@ msgstr "這是範例服務﹐提供測試與正式版發行前驗證使用。如
|
|
|
329
345
|
|
|
330
346
|
#: templates/umap/content_footer.html:5
|
|
331
347
|
msgid "An OpenStreetMap project"
|
|
332
|
-
msgstr ""
|
|
348
|
+
msgstr "開放街圖的專案"
|
|
333
349
|
|
|
334
350
|
#: templates/umap/content_footer.html:6
|
|
335
351
|
msgid "version"
|
|
336
|
-
msgstr ""
|
|
352
|
+
msgstr "版本"
|
|
337
353
|
|
|
338
354
|
#: templates/umap/content_footer.html:7
|
|
339
355
|
msgid "Hosted by"
|
|
340
|
-
msgstr ""
|
|
356
|
+
msgstr "由架設"
|
|
341
357
|
|
|
342
358
|
#: templates/umap/content_footer.html:8
|
|
343
359
|
msgid "Contact"
|
|
344
|
-
msgstr ""
|
|
360
|
+
msgstr "聯絡"
|
|
345
361
|
|
|
346
362
|
#: templates/umap/content_footer.html:9 templates/umap/navigation.html:25
|
|
347
363
|
msgid "Help"
|
|
@@ -356,13 +372,13 @@ msgstr "我的地圖 (%(count)s)"
|
|
|
356
372
|
msgid "My Maps"
|
|
357
373
|
msgstr "我的地圖"
|
|
358
374
|
|
|
359
|
-
#: templates/umap/dashboard_menu.html:
|
|
375
|
+
#: templates/umap/dashboard_menu.html:12
|
|
360
376
|
msgid "My profile"
|
|
361
377
|
msgstr "我的個人檔案"
|
|
362
378
|
|
|
363
|
-
#: templates/umap/dashboard_menu.html:
|
|
379
|
+
#: templates/umap/dashboard_menu.html:15
|
|
364
380
|
msgid "My teams"
|
|
365
|
-
msgstr ""
|
|
381
|
+
msgstr "我的團隊"
|
|
366
382
|
|
|
367
383
|
#: templates/umap/home.html:14
|
|
368
384
|
msgid "Map of the uMaps"
|
|
@@ -376,11 +392,11 @@ msgstr "找點子,瀏覽其他地圖"
|
|
|
376
392
|
msgid "You are logged in. Continuing..."
|
|
377
393
|
msgstr "您已登入,繼續中..."
|
|
378
394
|
|
|
379
|
-
#: templates/umap/map_list.html:
|
|
395
|
+
#: templates/umap/map_list.html:11 views.py:433
|
|
380
396
|
msgid "by"
|
|
381
397
|
msgstr "由"
|
|
382
398
|
|
|
383
|
-
#: templates/umap/map_list.html:
|
|
399
|
+
#: templates/umap/map_list.html:20
|
|
384
400
|
msgid "More"
|
|
385
401
|
msgstr "更多"
|
|
386
402
|
|
|
@@ -555,20 +571,20 @@ msgstr "搜尋"
|
|
|
555
571
|
#: templates/umap/team_detail.html:10
|
|
556
572
|
#, python-format
|
|
557
573
|
msgid "Browse %(current_team)s's maps"
|
|
558
|
-
msgstr ""
|
|
574
|
+
msgstr "瀏覽%(current_team)s的地圖"
|
|
559
575
|
|
|
560
576
|
#: templates/umap/team_detail.html:22
|
|
561
577
|
#, python-format
|
|
562
578
|
msgid "%(current_team)s has no public maps."
|
|
563
|
-
msgstr ""
|
|
579
|
+
msgstr "%(current_team)s沒有公開地圖"
|
|
564
580
|
|
|
565
581
|
#: templates/umap/team_form.html:24
|
|
566
582
|
msgid "Delete this team"
|
|
567
|
-
msgstr ""
|
|
583
|
+
msgstr "刪除這個團隊"
|
|
568
584
|
|
|
569
585
|
#: templates/umap/team_form.html:47
|
|
570
586
|
msgid "Add user"
|
|
571
|
-
msgstr ""
|
|
587
|
+
msgstr "新增使用者"
|
|
572
588
|
|
|
573
589
|
#: templates/umap/user_dashboard.html:9 templates/umap/user_dashboard.html:25
|
|
574
590
|
msgid "Search my maps"
|
|
@@ -589,76 +605,76 @@ msgstr "你目前還沒有地圖。"
|
|
|
589
605
|
|
|
590
606
|
#: templates/umap/user_teams.html:17
|
|
591
607
|
msgid "Users"
|
|
592
|
-
msgstr ""
|
|
608
|
+
msgstr "使用者"
|
|
593
609
|
|
|
594
610
|
#: templates/umap/user_teams.html:48
|
|
595
611
|
msgid "New team"
|
|
596
|
-
msgstr ""
|
|
612
|
+
msgstr "新的團隊"
|
|
597
613
|
|
|
598
|
-
#: views.py:
|
|
614
|
+
#: views.py:234
|
|
599
615
|
msgid "Cannot delete a team with more than one member"
|
|
600
|
-
msgstr ""
|
|
616
|
+
msgstr "無法刪除超過一位成員的團隊"
|
|
601
617
|
|
|
602
|
-
#: views.py:
|
|
618
|
+
#: views.py:238
|
|
603
619
|
#, python-format
|
|
604
620
|
msgid "Team “%(name)s” has been deleted"
|
|
605
|
-
msgstr ""
|
|
621
|
+
msgstr "已經刪除團隊 \"%(name)s\" "
|
|
606
622
|
|
|
607
623
|
#: views.py:438
|
|
608
624
|
msgid "View the map"
|
|
609
625
|
msgstr "檢視地圖"
|
|
610
626
|
|
|
611
|
-
#: views.py:
|
|
627
|
+
#: views.py:820
|
|
612
628
|
msgid "See full screen"
|
|
613
629
|
msgstr "檢視全螢幕"
|
|
614
630
|
|
|
615
|
-
#: views.py:
|
|
631
|
+
#: views.py:963
|
|
616
632
|
msgid "Map editors updated with success!"
|
|
617
633
|
msgstr "地圖編輯者更新完成"
|
|
618
634
|
|
|
619
|
-
#: views.py:
|
|
635
|
+
#: views.py:999
|
|
620
636
|
#, python-format
|
|
621
637
|
msgid "The uMap edit link for your map: %(map_name)s"
|
|
622
638
|
msgstr "你的地圖 uMap 編輯連結:%(map_name)s"
|
|
623
639
|
|
|
624
|
-
#: views.py:
|
|
640
|
+
#: views.py:1002
|
|
625
641
|
#, python-format
|
|
626
642
|
msgid "Here is your secret edit link: %(link)s"
|
|
627
643
|
msgstr "這是你的祕密編輯連結:%(link)s"
|
|
628
644
|
|
|
629
|
-
#: views.py:
|
|
645
|
+
#: views.py:1009
|
|
630
646
|
#, python-format
|
|
631
647
|
msgid "Can't send email to %(email)s"
|
|
632
648
|
msgstr "無法傳送電子郵件到%(email)s"
|
|
633
649
|
|
|
634
|
-
#: views.py:
|
|
650
|
+
#: views.py:1012
|
|
635
651
|
#, python-format
|
|
636
652
|
msgid "Email sent to %(email)s"
|
|
637
653
|
msgstr "電子郵件寄至 %(email)s"
|
|
638
654
|
|
|
639
|
-
#: views.py:
|
|
655
|
+
#: views.py:1023
|
|
640
656
|
msgid "Only its owner can delete the map."
|
|
641
657
|
msgstr "只有擁有者可以刪除此地圖"
|
|
642
658
|
|
|
643
|
-
#: views.py:
|
|
659
|
+
#: views.py:1026
|
|
644
660
|
msgid "Map successfully deleted."
|
|
645
661
|
msgstr "成功刪除地圖"
|
|
646
662
|
|
|
647
|
-
#: views.py:
|
|
663
|
+
#: views.py:1052
|
|
648
664
|
#, python-format
|
|
649
665
|
msgid ""
|
|
650
666
|
"Your map has been cloned! If you want to edit this map from another "
|
|
651
667
|
"computer, please use this link: %(anonymous_url)s"
|
|
652
668
|
msgstr "您的地圖已複製完成!如果您想在不同的機器編輯這個地圖,請使用這個連結:%(anonymous_url)s"
|
|
653
669
|
|
|
654
|
-
#: views.py:
|
|
670
|
+
#: views.py:1057
|
|
655
671
|
msgid "Congratulations, your map has been cloned!"
|
|
656
672
|
msgstr "恭喜,您的地圖已被複製!"
|
|
657
673
|
|
|
658
|
-
#: views.py:
|
|
674
|
+
#: views.py:1308
|
|
659
675
|
msgid "Layer successfully deleted."
|
|
660
676
|
msgstr "圖層已刪除"
|
|
661
677
|
|
|
662
|
-
#: views.py:
|
|
678
|
+
#: views.py:1330
|
|
663
679
|
msgid "Permissions updated with success!"
|
|
664
680
|
msgstr "權限更新完成"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from datetime import datetime, timedelta
|
|
2
|
+
|
|
3
|
+
from django.core.management.base import BaseCommand
|
|
4
|
+
|
|
5
|
+
from umap.models import Map
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Command(BaseCommand):
|
|
9
|
+
help = "Remove maps in trash. Eg.: umap empty_trash --days 7"
|
|
10
|
+
|
|
11
|
+
def add_arguments(self, parser):
|
|
12
|
+
parser.add_argument(
|
|
13
|
+
"--days",
|
|
14
|
+
help="Number of days to consider maps for removal",
|
|
15
|
+
default=30,
|
|
16
|
+
type=int,
|
|
17
|
+
)
|
|
18
|
+
parser.add_argument(
|
|
19
|
+
"--dry-run",
|
|
20
|
+
help="Pretend to delete but just report",
|
|
21
|
+
action="store_true",
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
def handle(self, *args, **options):
|
|
25
|
+
days = options["days"]
|
|
26
|
+
since = (datetime.utcnow() - timedelta(days=days)).date()
|
|
27
|
+
print(f"Deleting map in trash since {since}")
|
|
28
|
+
maps = Map.objects.filter(share_status=Map.DELETED, modified_at__lt=since)
|
|
29
|
+
for map in maps:
|
|
30
|
+
map_id = map.id
|
|
31
|
+
map_name = map.name
|
|
32
|
+
trashed_at = map.modified_at.date()
|
|
33
|
+
if not options["dry_run"]:
|
|
34
|
+
map.delete()
|
|
35
|
+
print(f"Deleted map {map_name} ({map_id}), trashed at {trashed_at}")
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from django.conf import settings
|
|
2
|
+
from django.core.management.base import BaseCommand
|
|
3
|
+
|
|
4
|
+
from umap.models import DataLayer
|
|
5
|
+
from umap.storage.fs import FSDataStorage
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Command(BaseCommand):
|
|
9
|
+
help = "Migrate latest datalayers from filesystem to S3."
|
|
10
|
+
|
|
11
|
+
def handle(self, *args, **options):
|
|
12
|
+
assert settings.UMAP_READONLY, "You must run that script with a read-only uMap."
|
|
13
|
+
assert (
|
|
14
|
+
settings.STORAGES["data"]["BACKEND"] == "umap.storage.s3.S3DataStorage"
|
|
15
|
+
), "You must configure your storages to point to S3"
|
|
16
|
+
fs_storage = FSDataStorage()
|
|
17
|
+
for datalayer in DataLayer.objects.all():
|
|
18
|
+
geojson_fs_path = str(datalayer.geojson)
|
|
19
|
+
try:
|
|
20
|
+
datalayer.geojson.save(
|
|
21
|
+
datalayer.geojson.name, fs_storage.open(geojson_fs_path)
|
|
22
|
+
)
|
|
23
|
+
except FileNotFoundError as e:
|
|
24
|
+
print(e)
|
|
25
|
+
print(geojson_fs_path, "not found on disk")
|
|
26
|
+
continue
|
|
27
|
+
if options["verbosity"] > 1:
|
|
28
|
+
print("Migrated:", geojson_fs_path)
|
|
29
|
+
datalayer.save(force_update=True)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated by Django 5.1.2 on 2024-11-15 11:03
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
dependencies = [
|
|
8
|
+
("umap", "0022_add_team"),
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
operations = [
|
|
12
|
+
migrations.AlterField(
|
|
13
|
+
model_name="datalayer",
|
|
14
|
+
name="uuid",
|
|
15
|
+
field=models.UUIDField(
|
|
16
|
+
editable=False, primary_key=True, serialize=False, unique=True
|
|
17
|
+
),
|
|
18
|
+
),
|
|
19
|
+
]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Generated by Django 5.1.2 on 2024-12-10 16:48
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
import umap.models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
dependencies = [
|
|
10
|
+
("umap", "0023_alter_datalayer_uuid"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AlterField(
|
|
15
|
+
model_name="map",
|
|
16
|
+
name="share_status",
|
|
17
|
+
field=models.SmallIntegerField(
|
|
18
|
+
choices=[
|
|
19
|
+
(0, "Draft (private)"),
|
|
20
|
+
(1, "Everyone (public)"),
|
|
21
|
+
(2, "Anyone with link"),
|
|
22
|
+
(3, "Editors and team only"),
|
|
23
|
+
(9, "Blocked"),
|
|
24
|
+
(99, "Deleted"),
|
|
25
|
+
],
|
|
26
|
+
default=umap.models.get_default_share_status,
|
|
27
|
+
verbose_name="share status",
|
|
28
|
+
),
|
|
29
|
+
),
|
|
30
|
+
]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated by Django 5.1.2 on 2024-11-29 15:45
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
import umap.models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
dependencies = [
|
|
10
|
+
("umap", "0024_alter_map_share_status"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AlterField(
|
|
15
|
+
model_name="datalayer",
|
|
16
|
+
name="geojson",
|
|
17
|
+
field=models.FileField(
|
|
18
|
+
blank=True,
|
|
19
|
+
null=True,
|
|
20
|
+
storage=umap.models.set_storage,
|
|
21
|
+
upload_to=umap.models.upload_to,
|
|
22
|
+
),
|
|
23
|
+
),
|
|
24
|
+
]
|