umap-project 2.3.1__py3-none-any.whl → 2.4.0b0__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.
Files changed (210) hide show
  1. umap/.DS_Store +0 -0
  2. umap/__init__.py +1 -1
  3. umap/locale/en/LC_MESSAGES/django.po +81 -31
  4. umap/locale/fr/LC_MESSAGES/django.mo +0 -0
  5. umap/locale/fr/LC_MESSAGES/django.po +109 -59
  6. umap/management/commands/run_websocket_server.py +23 -0
  7. umap/models.py +6 -1
  8. umap/settings/base.py +11 -3
  9. umap/static/.DS_Store +0 -0
  10. umap/static/umap/.DS_Store +0 -0
  11. umap/static/umap/base.css +53 -162
  12. umap/static/umap/content.css +3 -2
  13. umap/static/umap/css/dialog.css +18 -0
  14. umap/static/umap/css/icon.css +8 -0
  15. umap/static/umap/css/importers.css +44 -0
  16. umap/static/umap/css/panel.css +19 -57
  17. umap/static/umap/css/tooltip.css +59 -0
  18. umap/static/umap/css/window.css +35 -0
  19. umap/static/umap/favicons/.DS_Store +0 -0
  20. umap/static/umap/fonts/.DS_Store +0 -0
  21. umap/static/umap/img/.DS_Store +0 -0
  22. umap/static/umap/img/alert-icon-error.svg +8 -0
  23. umap/static/umap/img/alert-icon-info.svg +4 -0
  24. umap/static/umap/img/alert-icon-success.svg +3 -0
  25. umap/static/umap/img/icon-external-link.svg +3 -0
  26. umap/static/umap/img/importers/communesfr.svg +5 -0
  27. umap/static/umap/img/importers/datasets.svg +13 -0
  28. umap/static/umap/img/importers/geodatamine.svg +10 -0
  29. umap/static/umap/img/importers/overpass.svg +7 -0
  30. umap/static/umap/img/importers/random.svg +18 -0
  31. umap/static/umap/img/importers/random1.svg +4 -0
  32. umap/static/umap/img/importers/random2.svg +4 -0
  33. umap/static/umap/img/source/.DS_Store +0 -0
  34. umap/static/umap/js/components/alerts/alert.css +160 -0
  35. umap/static/umap/js/components/alerts/alert.js +169 -0
  36. umap/static/umap/js/components/base.js +54 -0
  37. umap/static/umap/js/modules/autocomplete.js +347 -0
  38. umap/static/umap/js/modules/browser.js +1 -1
  39. umap/static/umap/js/modules/caption.js +4 -3
  40. umap/static/umap/js/modules/global.js +36 -12
  41. umap/static/umap/js/modules/help.js +255 -0
  42. umap/static/umap/js/modules/importer.js +280 -0
  43. umap/static/umap/js/modules/importers/communesfr.js +44 -0
  44. umap/static/umap/js/modules/importers/datasets.js +41 -0
  45. umap/static/umap/js/modules/importers/geodatamine.js +95 -0
  46. umap/static/umap/js/modules/importers/overpass.js +84 -0
  47. umap/static/umap/js/modules/request.js +12 -14
  48. umap/static/umap/js/modules/rules.js +241 -0
  49. umap/static/umap/js/modules/schema.js +63 -14
  50. umap/static/umap/js/modules/sync/engine.js +93 -0
  51. umap/static/umap/js/modules/sync/updaters.js +109 -0
  52. umap/static/umap/js/modules/sync/websocket.js +25 -0
  53. umap/static/umap/js/modules/ui/dialog.js +52 -0
  54. umap/static/umap/js/modules/{panel.js → ui/panel.js} +25 -14
  55. umap/static/umap/js/modules/ui/tooltip.js +116 -0
  56. umap/static/umap/js/modules/utils.js +25 -18
  57. umap/static/umap/js/umap.controls.js +13 -14
  58. umap/static/umap/js/umap.core.js +1 -324
  59. umap/static/umap/js/umap.features.js +67 -27
  60. umap/static/umap/js/umap.forms.js +9 -13
  61. umap/static/umap/js/umap.js +220 -180
  62. umap/static/umap/js/umap.layer.js +142 -74
  63. umap/static/umap/js/umap.permissions.js +5 -9
  64. umap/static/umap/js/umap.tableeditor.js +8 -8
  65. umap/static/umap/locale/am_ET.js +51 -16
  66. umap/static/umap/locale/am_ET.json +51 -16
  67. umap/static/umap/locale/ar.js +51 -16
  68. umap/static/umap/locale/ar.json +51 -16
  69. umap/static/umap/locale/ast.js +51 -16
  70. umap/static/umap/locale/ast.json +51 -16
  71. umap/static/umap/locale/bg.js +51 -16
  72. umap/static/umap/locale/bg.json +51 -16
  73. umap/static/umap/locale/br.js +55 -20
  74. umap/static/umap/locale/br.json +55 -20
  75. umap/static/umap/locale/ca.js +51 -16
  76. umap/static/umap/locale/ca.json +51 -16
  77. umap/static/umap/locale/cs_CZ.js +93 -58
  78. umap/static/umap/locale/cs_CZ.json +93 -58
  79. umap/static/umap/locale/da.js +51 -16
  80. umap/static/umap/locale/da.json +51 -16
  81. umap/static/umap/locale/de.js +56 -21
  82. umap/static/umap/locale/de.json +56 -21
  83. umap/static/umap/locale/el.js +51 -16
  84. umap/static/umap/locale/el.json +51 -16
  85. umap/static/umap/locale/en.js +51 -16
  86. umap/static/umap/locale/en.json +51 -16
  87. umap/static/umap/locale/en_US.json +51 -16
  88. umap/static/umap/locale/es.js +51 -16
  89. umap/static/umap/locale/es.json +51 -16
  90. umap/static/umap/locale/et.js +51 -16
  91. umap/static/umap/locale/et.json +51 -16
  92. umap/static/umap/locale/eu.js +51 -16
  93. umap/static/umap/locale/eu.json +51 -16
  94. umap/static/umap/locale/fa_IR.js +51 -16
  95. umap/static/umap/locale/fa_IR.json +51 -16
  96. umap/static/umap/locale/fi.js +51 -16
  97. umap/static/umap/locale/fi.json +51 -16
  98. umap/static/umap/locale/fr.js +52 -17
  99. umap/static/umap/locale/fr.json +52 -17
  100. umap/static/umap/locale/gl.js +51 -16
  101. umap/static/umap/locale/gl.json +51 -16
  102. umap/static/umap/locale/he.js +51 -16
  103. umap/static/umap/locale/he.json +51 -16
  104. umap/static/umap/locale/hr.js +51 -16
  105. umap/static/umap/locale/hr.json +51 -16
  106. umap/static/umap/locale/hu.js +51 -16
  107. umap/static/umap/locale/hu.json +51 -16
  108. umap/static/umap/locale/id.js +51 -16
  109. umap/static/umap/locale/id.json +51 -16
  110. umap/static/umap/locale/is.js +51 -16
  111. umap/static/umap/locale/is.json +51 -16
  112. umap/static/umap/locale/it.js +51 -16
  113. umap/static/umap/locale/it.json +51 -16
  114. umap/static/umap/locale/ja.js +51 -16
  115. umap/static/umap/locale/ja.json +51 -16
  116. umap/static/umap/locale/ko.js +51 -16
  117. umap/static/umap/locale/ko.json +51 -16
  118. umap/static/umap/locale/lt.js +51 -16
  119. umap/static/umap/locale/lt.json +51 -16
  120. umap/static/umap/locale/ms.js +51 -16
  121. umap/static/umap/locale/ms.json +51 -16
  122. umap/static/umap/locale/nl.js +51 -16
  123. umap/static/umap/locale/nl.json +51 -16
  124. umap/static/umap/locale/no.js +51 -16
  125. umap/static/umap/locale/no.json +51 -16
  126. umap/static/umap/locale/pl.js +93 -58
  127. umap/static/umap/locale/pl.json +93 -58
  128. umap/static/umap/locale/pl_PL.json +51 -16
  129. umap/static/umap/locale/pt.js +215 -180
  130. umap/static/umap/locale/pt.json +215 -180
  131. umap/static/umap/locale/pt_BR.js +51 -16
  132. umap/static/umap/locale/pt_BR.json +51 -16
  133. umap/static/umap/locale/pt_PT.js +51 -16
  134. umap/static/umap/locale/pt_PT.json +51 -16
  135. umap/static/umap/locale/ro.js +51 -16
  136. umap/static/umap/locale/ro.json +51 -16
  137. umap/static/umap/locale/ru.js +51 -16
  138. umap/static/umap/locale/ru.json +51 -16
  139. umap/static/umap/locale/si.js +51 -16
  140. umap/static/umap/locale/si.json +51 -16
  141. umap/static/umap/locale/sk_SK.js +51 -16
  142. umap/static/umap/locale/sk_SK.json +51 -16
  143. umap/static/umap/locale/sl.js +51 -16
  144. umap/static/umap/locale/sl.json +51 -16
  145. umap/static/umap/locale/sr.js +51 -16
  146. umap/static/umap/locale/sr.json +51 -16
  147. umap/static/umap/locale/sv.js +51 -16
  148. umap/static/umap/locale/sv.json +51 -16
  149. umap/static/umap/locale/th_TH.js +51 -16
  150. umap/static/umap/locale/th_TH.json +51 -16
  151. umap/static/umap/locale/tr.js +51 -16
  152. umap/static/umap/locale/tr.json +51 -16
  153. umap/static/umap/locale/uk_UA.js +51 -16
  154. umap/static/umap/locale/uk_UA.json +51 -16
  155. umap/static/umap/locale/vi.js +51 -16
  156. umap/static/umap/locale/vi.json +51 -16
  157. umap/static/umap/locale/vi_VN.json +51 -16
  158. umap/static/umap/locale/zh.js +51 -16
  159. umap/static/umap/locale/zh.json +51 -16
  160. umap/static/umap/locale/zh_CN.json +51 -16
  161. umap/static/umap/locale/zh_TW.Big5.json +51 -16
  162. umap/static/umap/locale/zh_TW.js +51 -16
  163. umap/static/umap/locale/zh_TW.json +51 -16
  164. umap/static/umap/map.css +27 -41
  165. umap/static/umap/unittests/sync.js +105 -0
  166. umap/static/umap/unittests/utils.js +76 -34
  167. umap/static/umap/vars.css +18 -1
  168. umap/static/umap/vendors/dompurify/purify.es.js +5 -59
  169. umap/static/umap/vendors/dompurify/purify.es.mjs.map +1 -1
  170. umap/templates/umap/components/alerts/alert.html +89 -0
  171. umap/templates/umap/content.html +4 -3
  172. umap/templates/umap/css.html +4 -0
  173. umap/templates/umap/home.html +3 -0
  174. umap/templates/umap/js.html +0 -3
  175. umap/templates/umap/map_init.html +2 -8
  176. umap/templates/umap/messages.html +9 -11
  177. umap/templates/umap/search.html +3 -0
  178. umap/tests/.DS_Store +0 -0
  179. umap/tests/base.py +2 -0
  180. umap/tests/integration/.DS_Store +0 -0
  181. umap/tests/integration/conftest.py +30 -0
  182. umap/tests/integration/test_anonymous_owned_map.py +8 -13
  183. umap/tests/integration/test_browser.py +1 -1
  184. umap/tests/integration/test_conditional_rules.py +201 -0
  185. umap/tests/integration/test_dashboard.py +1 -1
  186. umap/tests/integration/test_datalayer.py +2 -3
  187. umap/tests/integration/test_edit_datalayer.py +4 -4
  188. umap/tests/integration/test_edit_map.py +1 -1
  189. umap/tests/integration/test_facets_browser.py +3 -3
  190. umap/tests/integration/test_import.py +138 -49
  191. umap/tests/integration/test_map.py +2 -2
  192. umap/tests/integration/{test_collaborative_editing.py → test_optimistic_merge.py} +7 -7
  193. umap/tests/integration/test_owned_map.py +1 -1
  194. umap/tests/integration/test_picto.py +2 -2
  195. umap/tests/integration/test_statics.py +1 -1
  196. umap/tests/integration/test_websocket_sync.py +283 -0
  197. umap/tests/settings.py +5 -0
  198. umap/tests/test_datalayer_views.py +0 -1
  199. umap/tests/test_views.py +53 -0
  200. umap/urls.py +5 -0
  201. umap/views.py +40 -11
  202. umap/websocket_server.py +92 -0
  203. {umap_project-2.3.1.dist-info → umap_project-2.4.0b0.dist-info}/METADATA +11 -9
  204. {umap_project-2.3.1.dist-info → umap_project-2.4.0b0.dist-info}/RECORD +207 -164
  205. {umap_project-2.3.1.dist-info → umap_project-2.4.0b0.dist-info}/WHEEL +1 -1
  206. umap/static/umap/js/umap.autocomplete.js +0 -341
  207. umap/static/umap/js/umap.importer.js +0 -187
  208. umap/static/umap/js/umap.ui.js +0 -190
  209. {umap_project-2.3.1.dist-info → umap_project-2.4.0b0.dist-info}/entry_points.txt +0 -0
  210. {umap_project-2.3.1.dist-info → umap_project-2.4.0b0.dist-info}/licenses/LICENSE +0 -0
umap/.DS_Store ADDED
Binary file
umap/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION = "2.3.1"
1
+ VERSION = "2.4.0b0"
@@ -8,7 +8,7 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2024-04-24 19:16+0000\n"
11
+ "POT-Creation-Date: 2024-06-14 17:49+0000\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,7 +25,7 @@ msgstr ""
25
25
  msgid "Everyone can edit"
26
26
  msgstr ""
27
27
 
28
- #: forms.py:69 models.py:384
28
+ #: forms.py:69 models.py:389
29
29
  msgid "Inherit"
30
30
  msgstr ""
31
31
 
@@ -53,15 +53,15 @@ msgstr ""
53
53
  msgid "Order of the tilelayers in the edit box"
54
54
  msgstr ""
55
55
 
56
- #: models.py:147 models.py:385
56
+ #: models.py:147 models.py:390
57
57
  msgid "Everyone"
58
58
  msgstr ""
59
59
 
60
- #: models.py:148 models.py:154 models.py:386
60
+ #: models.py:148 models.py:154 models.py:391
61
61
  msgid "Editors only"
62
62
  msgstr ""
63
63
 
64
- #: models.py:149 models.py:387
64
+ #: models.py:149 models.py:392
65
65
  msgid "Owner only"
66
66
  msgstr ""
67
67
 
@@ -109,7 +109,7 @@ msgstr ""
109
109
  msgid "editors"
110
110
  msgstr ""
111
111
 
112
- #: models.py:186 models.py:408
112
+ #: models.py:186 models.py:413
113
113
  msgid "edit status"
114
114
  msgstr ""
115
115
 
@@ -117,23 +117,23 @@ msgstr ""
117
117
  msgid "share status"
118
118
  msgstr ""
119
119
 
120
- #: models.py:194 models.py:403
120
+ #: models.py:194 models.py:408
121
121
  msgid "settings"
122
122
  msgstr ""
123
123
 
124
- #: models.py:325
124
+ #: models.py:330
125
125
  msgid "Clone of"
126
126
  msgstr ""
127
127
 
128
- #: models.py:394
128
+ #: models.py:399
129
129
  msgid "description"
130
130
  msgstr ""
131
131
 
132
- #: models.py:398
132
+ #: models.py:403
133
133
  msgid "display on load"
134
134
  msgstr ""
135
135
 
136
- #: models.py:399
136
+ #: models.py:404
137
137
  msgid "Display this layer on load."
138
138
  msgstr ""
139
139
 
@@ -262,13 +262,59 @@ msgstr ""
262
262
  msgid "Play with the demo"
263
263
  msgstr ""
264
264
 
265
- #: templates/umap/content.html:22
265
+ #: templates/umap/components/alerts/alert.html:14
266
+ #: templates/umap/components/alerts/alert.html:49
267
+ #: templates/umap/components/alerts/alert.html:71
268
+ msgid "Close"
269
+ msgstr ""
270
+
271
+ #: templates/umap/components/alerts/alert.html:27
272
+ #, python-format
273
+ msgid ""
274
+ "Pro-tip: to easily find back your maps, <a href=\"%(login_url)s\" "
275
+ "target=\"_blank\">create an account</a> or <a href=\"%(login_url)s\" "
276
+ "target=\"_blank\">log in</a>."
277
+ msgstr ""
278
+
279
+ #: templates/umap/components/alerts/alert.html:30
280
+ msgid "Here is your secret link to edit the map, please keep it safe:"
281
+ msgstr ""
282
+
283
+ #: templates/umap/components/alerts/alert.html:33
284
+ msgid "Copy link"
285
+ msgstr ""
286
+
287
+ #: templates/umap/components/alerts/alert.html:39
288
+ msgid "Enter your email address to receive the secret link:"
289
+ msgstr ""
290
+
291
+ #: templates/umap/components/alerts/alert.html:41
292
+ msgid "Email"
293
+ msgstr ""
294
+
295
+ #: templates/umap/components/alerts/alert.html:42
296
+ msgid "Send me the link"
297
+ msgstr ""
298
+
299
+ #: templates/umap/components/alerts/alert.html:63
300
+ msgid "See their edits in another tab"
301
+ msgstr ""
302
+
303
+ #: templates/umap/components/alerts/alert.html:64
304
+ msgid "Keep your changes and loose theirs"
305
+ msgstr ""
306
+
307
+ #: templates/umap/components/alerts/alert.html:65
308
+ msgid "Keep their changes and loose yours"
309
+ msgstr ""
310
+
311
+ #: templates/umap/content.html:24
266
312
  msgid ""
267
313
  "This instance of uMap is currently in read only mode, no creation/edit is "
268
314
  "allowed."
269
315
  msgstr ""
270
316
 
271
- #: templates/umap/content.html:30
317
+ #: templates/umap/content.html:32
272
318
  #, python-format
273
319
  msgid ""
274
320
  "This is a demo instance, used for tests and pre-rolling releases. If you "
@@ -277,11 +323,11 @@ msgid ""
277
323
  "instance, it's <a href=\"%(repo_url)s\">open source</a>!"
278
324
  msgstr ""
279
325
 
280
- #: templates/umap/home.html:8
326
+ #: templates/umap/home.html:11
281
327
  msgid "Map of the uMaps"
282
328
  msgstr ""
283
329
 
284
- #: templates/umap/home.html:14
330
+ #: templates/umap/home.html:17
285
331
  msgid "Get inspired, browse maps"
286
332
  msgstr ""
287
333
 
@@ -289,7 +335,7 @@ msgstr ""
289
335
  msgid "You are logged in. Continuing..."
290
336
  msgstr ""
291
337
 
292
- #: templates/umap/map_list.html:9 views.py:349
338
+ #: templates/umap/map_list.html:9 views.py:348
293
339
  msgid "by"
294
340
  msgstr ""
295
341
 
@@ -446,18 +492,18 @@ msgstr ""
446
492
  msgid "Your password was changed."
447
493
  msgstr ""
448
494
 
449
- #: templates/umap/search.html:10
495
+ #: templates/umap/search.html:13
450
496
  #, python-format
451
497
  msgid "%(count)s map found:"
452
498
  msgid_plural "%(count)s maps found:"
453
499
  msgstr[0] ""
454
500
  msgstr[1] ""
455
501
 
456
- #: templates/umap/search.html:18
502
+ #: templates/umap/search.html:21
457
503
  msgid "No map found."
458
504
  msgstr ""
459
505
 
460
- #: templates/umap/search.html:21
506
+ #: templates/umap/search.html:24
461
507
  msgid "Latest created maps"
462
508
  msgstr ""
463
509
 
@@ -495,57 +541,61 @@ msgstr ""
495
541
  msgid "You have no map yet."
496
542
  msgstr ""
497
543
 
498
- #: views.py:354
544
+ #: views.py:353
499
545
  msgid "View the map"
500
546
  msgstr ""
501
547
 
502
- #: views.py:716
548
+ #: views.py:718
503
549
  msgid "See full screen"
504
550
  msgstr ""
505
551
 
506
- #: views.py:817
552
+ #: views.py:846
507
553
  msgid "Map editors updated with success!"
508
554
  msgstr ""
509
555
 
510
- #: views.py:854
556
+ #: views.py:883
511
557
  #, python-format
512
558
  msgid "The uMap edit link for your map: %(map_name)s"
513
559
  msgstr ""
514
560
 
515
- #: views.py:857
561
+ #: views.py:886
516
562
  #, python-format
517
563
  msgid "Here is your secret edit link: %(link)s"
518
564
  msgstr ""
519
565
 
520
- #: views.py:864
566
+ #: views.py:893
521
567
  #, python-format
522
568
  msgid "Can't send email to %(email)s"
523
569
  msgstr ""
524
570
 
525
- #: views.py:867
571
+ #: views.py:896
526
572
  #, python-format
527
573
  msgid "Email sent to %(email)s"
528
574
  msgstr ""
529
575
 
530
- #: views.py:878
576
+ #: views.py:907
531
577
  msgid "Only its owner can delete the map."
532
578
  msgstr ""
533
579
 
534
- #: views.py:906
580
+ #: views.py:910
581
+ msgid "Map successfully deleted."
582
+ msgstr ""
583
+
584
+ #: views.py:936
535
585
  #, python-format
536
586
  msgid ""
537
587
  "Your map has been cloned! If you want to edit this map from another "
538
588
  "computer, please use this link: %(anonymous_url)s"
539
589
  msgstr ""
540
590
 
541
- #: views.py:911
591
+ #: views.py:941
542
592
  msgid "Congratulations, your map has been cloned!"
543
593
  msgstr ""
544
594
 
545
- #: views.py:1146
595
+ #: views.py:1176
546
596
  msgid "Layer successfully deleted."
547
597
  msgstr ""
548
598
 
549
- #: views.py:1168
599
+ #: views.py:1198
550
600
  msgid "Permissions updated with success!"
551
601
  msgstr ""
Binary file
@@ -23,7 +23,7 @@ msgid ""
23
23
  msgstr ""
24
24
  "Project-Id-Version: uMap\n"
25
25
  "Report-Msgid-Bugs-To: \n"
26
- "POT-Creation-Date: 2024-03-01 16:51+0000\n"
26
+ "POT-Creation-Date: 2024-06-14 17:49+0000\n"
27
27
  "PO-Revision-Date: 2013-11-22 14:00+0000\n"
28
28
  "Last-Translator: yohanboniface <yohanboniface@free.fr>, 2013-2014,2018-2019,2023-2024\n"
29
29
  "Language-Team: French (http://app.transifex.com/openstreetmap/umap/language/fr/)\n"
@@ -41,7 +41,7 @@ msgstr "Modifiable seulement avec le lien de modification secret"
41
41
  msgid "Everyone can edit"
42
42
  msgstr "Tout le monde peut modifier"
43
43
 
44
- #: forms.py:69 models.py:371
44
+ #: forms.py:69 models.py:389
45
45
  msgid "Inherit"
46
46
  msgstr "Par défaut"
47
47
 
@@ -49,107 +49,107 @@ msgstr "Par défaut"
49
49
  msgid "Site is readonly for maintenance"
50
50
  msgstr "Le site est en lecture seule pour maintenance."
51
51
 
52
- #: models.py:50
52
+ #: models.py:53
53
53
  msgid "name"
54
54
  msgstr "nom"
55
55
 
56
- #: models.py:81
56
+ #: models.py:84
57
57
  msgid "details"
58
58
  msgstr "détails"
59
59
 
60
- #: models.py:82
60
+ #: models.py:85
61
61
  msgid "Link to a page where the licence is detailed."
62
62
  msgstr "Lien vers une page détaillant la licence."
63
63
 
64
- #: models.py:92
64
+ #: models.py:95
65
65
  msgid "URL template using OSM tile format"
66
66
  msgstr "Modèle d'URL au format des tuiles OSM"
67
67
 
68
- #: models.py:98
68
+ #: models.py:101
69
69
  msgid "Order of the tilelayers in the edit box"
70
70
  msgstr "Ordre des calques de tuiles dans le panneau de modification"
71
71
 
72
- #: models.py:144 models.py:372
72
+ #: models.py:147 models.py:390
73
73
  msgid "Everyone"
74
74
  msgstr "Tout le monde"
75
75
 
76
- #: models.py:145 models.py:151 models.py:373
76
+ #: models.py:148 models.py:154 models.py:391
77
77
  msgid "Editors only"
78
78
  msgstr "Éditeurs uniquement"
79
79
 
80
- #: models.py:146 models.py:374
80
+ #: models.py:149 models.py:392
81
81
  msgid "Owner only"
82
82
  msgstr "Propriétaire uniquement"
83
83
 
84
- #: models.py:149
84
+ #: models.py:152
85
85
  msgid "Everyone (public)"
86
86
  msgstr "Tout le monde (public)"
87
87
 
88
- #: models.py:150
88
+ #: models.py:153
89
89
  msgid "Anyone with link"
90
90
  msgstr "Quiconque a le lien"
91
91
 
92
- #: models.py:152
92
+ #: models.py:155
93
93
  msgid "Blocked"
94
94
  msgstr "Bloquée"
95
95
 
96
- #: models.py:155 models.py:378
97
- msgid "description"
98
- msgstr "description"
99
-
100
- #: models.py:156
96
+ #: models.py:158
101
97
  msgid "center"
102
98
  msgstr "centre"
103
99
 
104
- #: models.py:157
100
+ #: models.py:159
105
101
  msgid "zoom"
106
102
  msgstr "zoom"
107
103
 
108
- #: models.py:159
104
+ #: models.py:161
109
105
  msgid "locate"
110
106
  msgstr "géolocaliser"
111
107
 
112
- #: models.py:159
108
+ #: models.py:161
113
109
  msgid "Locate user on load?"
114
110
  msgstr "Géolocaliser l'utilisateur au chargement ?"
115
111
 
116
- #: models.py:163
112
+ #: models.py:165
117
113
  msgid "Choose the map licence."
118
114
  msgstr "Choisir une licence pour la carte"
119
115
 
120
- #: models.py:164
116
+ #: models.py:166
121
117
  msgid "licence"
122
118
  msgstr "licence"
123
119
 
124
- #: models.py:175
120
+ #: models.py:177
125
121
  msgid "owner"
126
122
  msgstr "créateur"
127
123
 
128
- #: models.py:179
124
+ #: models.py:181
129
125
  msgid "editors"
130
126
  msgstr "éditeurs"
131
127
 
132
- #: models.py:184 models.py:392
128
+ #: models.py:186 models.py:413
133
129
  msgid "edit status"
134
130
  msgstr "statut de modification"
135
131
 
136
- #: models.py:189
132
+ #: models.py:191
137
133
  msgid "share status"
138
134
  msgstr "qui a accès"
139
135
 
140
- #: models.py:192 models.py:387
136
+ #: models.py:194 models.py:408
141
137
  msgid "settings"
142
138
  msgstr "réglages"
143
139
 
144
- #: models.py:320
140
+ #: models.py:330
145
141
  msgid "Clone of"
146
142
  msgstr "Clone de"
147
143
 
148
- #: models.py:382
144
+ #: models.py:399
145
+ msgid "description"
146
+ msgstr "description"
147
+
148
+ #: models.py:403
149
149
  msgid "display on load"
150
150
  msgstr "afficher au chargement."
151
151
 
152
- #: models.py:383
152
+ #: models.py:404
153
153
  msgid "Display this layer on load."
154
154
  msgstr "Afficher ce calque au chargement."
155
155
 
@@ -278,13 +278,59 @@ msgstr "Créer une carte"
278
278
  msgid "Play with the demo"
279
279
  msgstr "Tester la démo"
280
280
 
281
- #: templates/umap/content.html:22
281
+ #: templates/umap/components/alerts/alert.html:14
282
+ #: templates/umap/components/alerts/alert.html:49
283
+ #: templates/umap/components/alerts/alert.html:71
284
+ msgid "Close"
285
+ msgstr "Fermer"
286
+
287
+ #: templates/umap/components/alerts/alert.html:27
288
+ #, python-format
289
+ msgid ""
290
+ "Pro-tip: to easily find back your maps, <a href=\"%(login_url)s\" "
291
+ "target=\"_blank\">create an account</a> or <a href=\"%(login_url)s\" "
292
+ "target=\"_blank\">log in</a>."
293
+ msgstr "Astuce: pour retrouver facilement vos cartes, <a href=\"%(login_url)s\" target=\"_blank\">créez un compte</a> ou <a href=\"%(login_url)s\" target=\"_blank\">identifiez-vous</a>."
294
+
295
+ #: templates/umap/components/alerts/alert.html:30
296
+ msgid "Here is your secret link to edit the map, please keep it safe:"
297
+ msgstr "Ceci est le lien d'édition secret, gardez-le en lieu sûr:"
298
+
299
+ #: templates/umap/components/alerts/alert.html:33
300
+ msgid "Copy link"
301
+ msgstr "Copier le lien"
302
+
303
+ #: templates/umap/components/alerts/alert.html:39
304
+ msgid "Enter your email address to receive the secret link:"
305
+ msgstr "Entrer une adresse mail pour recevoir le lien secret:"
306
+
307
+ #: templates/umap/components/alerts/alert.html:41
308
+ msgid "Email"
309
+ msgstr "Courriel"
310
+
311
+ #: templates/umap/components/alerts/alert.html:42
312
+ msgid "Send me the link"
313
+ msgstr "Recevoir le lien"
314
+
315
+ #: templates/umap/components/alerts/alert.html:63
316
+ msgid "See their edits in another tab"
317
+ msgstr "Voir leurs changements dans un nouvel onglet"
318
+
319
+ #: templates/umap/components/alerts/alert.html:64
320
+ msgid "Keep your changes and loose theirs"
321
+ msgstr "Garder mes changements et écraser les leurs"
322
+
323
+ #: templates/umap/components/alerts/alert.html:65
324
+ msgid "Keep their changes and loose yours"
325
+ msgstr "Garder leurs changements et écraser les miens"
326
+
327
+ #: templates/umap/content.html:24
282
328
  msgid ""
283
329
  "This instance of uMap is currently in read only mode, no creation/edit is "
284
330
  "allowed."
285
331
  msgstr "uMap est actuellement en mode lecture seule, aucune création ou modification n'est possible."
286
332
 
287
- #: templates/umap/content.html:30
333
+ #: templates/umap/content.html:32
288
334
  #, python-format
289
335
  msgid ""
290
336
  "This is a demo instance, used for tests and pre-rolling releases. If you "
@@ -293,11 +339,11 @@ msgid ""
293
339
  "instance, it's <a href=\"%(repo_url)s\">open source</a>!"
294
340
  msgstr "Il s'agit d'un site de démonstration, utilisé pour les tests et validation avant diffusion. Si vous avez besoin d'une version stable, utilisez plutôt <a href=\"%(stable_url)s\">%(stable_url)s</a>. Vous pouvez aussi mettre en place votre propre version, c'est <a href=\"%(repo_url)s\">open source</a>!"
295
341
 
296
- #: templates/umap/home.html:8
342
+ #: templates/umap/home.html:11
297
343
  msgid "Map of the uMaps"
298
344
  msgstr "La carte des uMaps"
299
345
 
300
- #: templates/umap/home.html:14
346
+ #: templates/umap/home.html:17
301
347
  msgid "Get inspired, browse maps"
302
348
  msgstr "Naviguer dans les cartes"
303
349
 
@@ -305,7 +351,7 @@ msgstr "Naviguer dans les cartes"
305
351
  msgid "You are logged in. Continuing..."
306
352
  msgstr "Vous êtes maintenant identifié. Merci de patienter..."
307
353
 
308
- #: templates/umap/map_list.html:9 views.py:342
354
+ #: templates/umap/map_list.html:9 views.py:348
309
355
  msgid "by"
310
356
  msgstr "par"
311
357
 
@@ -361,37 +407,37 @@ msgstr "Télécharger"
361
407
  msgid "Clone"
362
408
  msgstr "Cloner"
363
409
 
364
- #: templates/umap/map_table.html:76 templates/umap/map_table.html:78
410
+ #: templates/umap/map_table.html:77 templates/umap/map_table.html:79
365
411
  msgid "Delete"
366
412
  msgstr "Supprimer"
367
413
 
368
- #: templates/umap/map_table.html:91
414
+ #: templates/umap/map_table.html:93
369
415
  msgid "first"
370
416
  msgstr "début"
371
417
 
372
- #: templates/umap/map_table.html:92
418
+ #: templates/umap/map_table.html:94
373
419
  msgid "previous"
374
420
  msgstr "précédente"
375
421
 
376
- #: templates/umap/map_table.html:100
422
+ #: templates/umap/map_table.html:102
377
423
  #, python-format
378
424
  msgid "Page %(maps_number)s of %(num_pages)s"
379
425
  msgstr "Page %(maps_number)s de %(num_pages)s"
380
426
 
381
- #: templates/umap/map_table.html:105
427
+ #: templates/umap/map_table.html:107
382
428
  msgid "next"
383
429
  msgstr "suivante"
384
430
 
385
- #: templates/umap/map_table.html:106
431
+ #: templates/umap/map_table.html:108
386
432
  msgid "last"
387
433
  msgstr "fin"
388
434
 
389
- #: templates/umap/map_table.html:114
435
+ #: templates/umap/map_table.html:116
390
436
  #, python-format
391
437
  msgid "Lines per page: %(per_page)s"
392
438
  msgstr "Lignes par page: %(per_page)s"
393
439
 
394
- #: templates/umap/map_table.html:119
440
+ #: templates/umap/map_table.html:121
395
441
  #, python-format
396
442
  msgid "%(count)s maps"
397
443
  msgstr "%(count)s cartes"
@@ -462,7 +508,7 @@ msgstr "Le mot de passe a été modifié"
462
508
  msgid "Your password was changed."
463
509
  msgstr "Votre mot de passe a été modifié"
464
510
 
465
- #: templates/umap/search.html:10
511
+ #: templates/umap/search.html:13
466
512
  #, python-format
467
513
  msgid "%(count)s map found:"
468
514
  msgid_plural "%(count)s maps found:"
@@ -470,11 +516,11 @@ msgstr[0] "%(count)s carte trouvée:"
470
516
  msgstr[1] "%(count)s cartes trouvées:"
471
517
  msgstr[2] "%(count)s cartes trouvées:"
472
518
 
473
- #: templates/umap/search.html:18
519
+ #: templates/umap/search.html:21
474
520
  msgid "No map found."
475
521
  msgstr "Aucune carte trouvée."
476
522
 
477
- #: templates/umap/search.html:21
523
+ #: templates/umap/search.html:24
478
524
  msgid "Latest created maps"
479
525
  msgstr "Dernières cartes créées."
480
526
 
@@ -512,57 +558,61 @@ msgstr "Télécharger %(count)s cartes"
512
558
  msgid "You have no map yet."
513
559
  msgstr "Vous n'avez pas encore de carte."
514
560
 
515
- #: views.py:347
561
+ #: views.py:353
516
562
  msgid "View the map"
517
563
  msgstr "Voir la carte"
518
564
 
519
- #: views.py:705
565
+ #: views.py:718
520
566
  msgid "See full screen"
521
567
  msgstr "Plein écran"
522
568
 
523
- #: views.py:804
569
+ #: views.py:846
524
570
  msgid "Map editors updated with success!"
525
571
  msgstr "Éditeurs de la carte mis à jour !"
526
572
 
527
- #: views.py:841
573
+ #: views.py:883
528
574
  #, python-format
529
575
  msgid "The uMap edit link for your map: %(map_name)s"
530
576
  msgstr "La lien d'édition uMap pour votre carte %(map_name)s"
531
577
 
532
- #: views.py:844
578
+ #: views.py:886
533
579
  #, python-format
534
580
  msgid "Here is your secret edit link: %(link)s"
535
581
  msgstr "Voici votre lien d'édition secret: %(link)s"
536
582
 
537
- #: views.py:851
583
+ #: views.py:893
538
584
  #, python-format
539
585
  msgid "Can't send email to %(email)s"
540
586
  msgstr "Impossible d'envoyer un courriel vers %(email)s"
541
587
 
542
- #: views.py:854
588
+ #: views.py:896
543
589
  #, python-format
544
590
  msgid "Email sent to %(email)s"
545
591
  msgstr "Courriel envoyé à %(email)s"
546
592
 
547
- #: views.py:865
593
+ #: views.py:907
548
594
  msgid "Only its owner can delete the map."
549
595
  msgstr "Seul le créateur de la carte peut la supprimer."
550
596
 
551
- #: views.py:893
597
+ #: views.py:910
598
+ msgid "Map successfully deleted."
599
+ msgstr "La bien été supprimée."
600
+
601
+ #: views.py:936
552
602
  #, python-format
553
603
  msgid ""
554
604
  "Your map has been cloned! If you want to edit this map from another "
555
605
  "computer, please use this link: %(anonymous_url)s"
556
606
  msgstr "Votre carte a été dupliquée ! Si vous souhaitez la modifier depuis un autre ordinateur, veuillez utiliser ce lien : %(anonymous_url)s"
557
607
 
558
- #: views.py:898
608
+ #: views.py:941
559
609
  msgid "Congratulations, your map has been cloned!"
560
610
  msgstr "Votre carte a été dupliquée !"
561
611
 
562
- #: views.py:1136
612
+ #: views.py:1176
563
613
  msgid "Layer successfully deleted."
564
614
  msgstr "Calque supprimé."
565
615
 
566
- #: views.py:1158
616
+ #: views.py:1198
567
617
  msgid "Permissions updated with success!"
568
618
  msgstr "Les permissions ont bien été modifiées !"
@@ -0,0 +1,23 @@
1
+ from django.conf import settings
2
+ from django.core.management.base import BaseCommand
3
+
4
+ from umap import websocket_server
5
+
6
+
7
+ class Command(BaseCommand):
8
+ help = "Run the websocket server"
9
+
10
+ def add_arguments(self, parser):
11
+ parser.add_argument(
12
+ "--host",
13
+ help="The server host to bind to.",
14
+ default=settings.WEBSOCKET_BACK_HOST,
15
+ )
16
+ parser.add_argument(
17
+ "--port",
18
+ help="The server port to bind to.",
19
+ default=settings.WEBSOCKET_BACK_PORT,
20
+ )
21
+
22
+ def handle(self, *args, **options):
23
+ websocket_server.run(options["host"], options["port"])
umap/models.py CHANGED
@@ -251,9 +251,14 @@ class Map(NamedModel):
251
251
  path = reverse("map_anonymous_edit_url", kwargs={"signature": signature})
252
252
  return settings.SITE_URL + path
253
253
 
254
+ def is_owner(self, user=None, request=None):
255
+ if user and self.owner == user:
256
+ return True
257
+ return self.is_anonymous_owner(request)
258
+
254
259
  def is_anonymous_owner(self, request):
255
260
  if not request or self.owner:
256
- # edit cookies are only valid while map hasn't owner
261
+ # edit cookies are only valid while the map doesn't have owner
257
262
  return False
258
263
  key, value = self.signed_cookie_elements
259
264
  try: