umap-project 2.5.1__py3-none-any.whl → 2.6.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.
Potentially problematic release.
This version of umap-project might be problematic. Click here for more details.
- umap/__init__.py +1 -1
- umap/admin.py +6 -1
- umap/context_processors.py +2 -1
- umap/decorators.py +13 -2
- umap/forms.py +26 -2
- umap/locale/br/LC_MESSAGES/django.mo +0 -0
- umap/locale/br/LC_MESSAGES/django.po +252 -146
- umap/locale/ca/LC_MESSAGES/django.mo +0 -0
- umap/locale/ca/LC_MESSAGES/django.po +274 -162
- umap/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
- umap/locale/cs_CZ/LC_MESSAGES/django.po +261 -150
- umap/locale/de/LC_MESSAGES/django.mo +0 -0
- umap/locale/de/LC_MESSAGES/django.po +299 -187
- umap/locale/el/LC_MESSAGES/django.mo +0 -0
- umap/locale/el/LC_MESSAGES/django.po +215 -159
- umap/locale/en/LC_MESSAGES/django.po +211 -155
- umap/locale/es/LC_MESSAGES/django.mo +0 -0
- umap/locale/es/LC_MESSAGES/django.po +255 -144
- umap/locale/eu/LC_MESSAGES/django.mo +0 -0
- umap/locale/eu/LC_MESSAGES/django.po +254 -198
- umap/locale/fa_IR/LC_MESSAGES/django.mo +0 -0
- umap/locale/fa_IR/LC_MESSAGES/django.po +346 -234
- umap/locale/fr/LC_MESSAGES/django.mo +0 -0
- umap/locale/fr/LC_MESSAGES/django.po +216 -160
- umap/locale/hu/LC_MESSAGES/django.mo +0 -0
- umap/locale/hu/LC_MESSAGES/django.po +215 -159
- umap/locale/it/LC_MESSAGES/django.mo +0 -0
- umap/locale/it/LC_MESSAGES/django.po +252 -146
- umap/locale/ms/LC_MESSAGES/django.mo +0 -0
- umap/locale/ms/LC_MESSAGES/django.po +252 -146
- umap/locale/pl/LC_MESSAGES/django.mo +0 -0
- umap/locale/pl/LC_MESSAGES/django.po +254 -148
- umap/locale/pt/LC_MESSAGES/django.mo +0 -0
- umap/locale/pt/LC_MESSAGES/django.po +215 -159
- umap/locale/sv/LC_MESSAGES/django.mo +0 -0
- umap/locale/sv/LC_MESSAGES/django.po +254 -143
- umap/locale/th_TH/LC_MESSAGES/django.mo +0 -0
- umap/locale/th_TH/LC_MESSAGES/django.po +125 -70
- umap/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
- umap/locale/zh_TW/LC_MESSAGES/django.po +256 -145
- umap/migrations/0022_add_team.py +94 -0
- umap/models.py +45 -10
- umap/settings/__init__.py +2 -0
- umap/settings/base.py +3 -2
- umap/static/umap/base.css +32 -41
- umap/static/umap/content.css +19 -25
- umap/static/umap/css/icon.css +63 -37
- umap/static/umap/css/importers.css +1 -1
- umap/static/umap/css/slideshow.css +7 -5
- umap/static/umap/css/tableeditor.css +4 -3
- umap/static/umap/img/16-white.svg +1 -4
- umap/static/umap/img/16.svg +2 -6
- umap/static/umap/img/24-white.svg +4 -4
- umap/static/umap/img/24.svg +6 -6
- umap/static/umap/img/source/16-white.svg +2 -5
- umap/static/umap/img/source/16.svg +3 -7
- umap/static/umap/img/source/24-white.svg +7 -14
- umap/static/umap/img/source/24.svg +10 -17
- umap/static/umap/js/components/alerts/alert.css +20 -8
- umap/static/umap/js/modules/autocomplete.js +3 -3
- umap/static/umap/js/modules/browser.js +4 -3
- umap/static/umap/js/modules/caption.js +9 -11
- umap/static/umap/js/modules/data/features.js +994 -0
- umap/static/umap/js/modules/data/layer.js +1210 -0
- umap/static/umap/js/modules/formatter.js +12 -3
- umap/static/umap/js/modules/global.js +21 -5
- umap/static/umap/js/modules/permissions.js +280 -0
- umap/static/umap/js/{umap.icon.js → modules/rendering/icon.js} +77 -56
- umap/static/umap/js/modules/rendering/layers/base.js +105 -0
- umap/static/umap/js/modules/rendering/layers/classified.js +484 -0
- umap/static/umap/js/modules/rendering/layers/cluster.js +103 -0
- umap/static/umap/js/modules/rendering/layers/heat.js +182 -0
- umap/static/umap/js/modules/rendering/popup.js +99 -0
- umap/static/umap/js/modules/rendering/template.js +217 -0
- umap/static/umap/js/modules/rendering/ui.js +573 -0
- umap/static/umap/js/modules/schema.js +24 -0
- umap/static/umap/js/modules/share.js +66 -45
- umap/static/umap/js/modules/sync/updaters.js +9 -10
- umap/static/umap/js/modules/tableeditor.js +7 -7
- umap/static/umap/js/modules/ui/dialog.js +8 -4
- umap/static/umap/js/modules/utils.js +22 -13
- umap/static/umap/js/umap.controls.js +79 -146
- umap/static/umap/js/umap.core.js +9 -9
- umap/static/umap/js/umap.forms.js +32 -12
- umap/static/umap/js/umap.js +65 -63
- umap/static/umap/locale/br.js +35 -35
- umap/static/umap/locale/br.json +35 -35
- umap/static/umap/locale/ca.js +50 -50
- umap/static/umap/locale/ca.json +50 -50
- umap/static/umap/locale/de.js +136 -136
- umap/static/umap/locale/de.json +136 -136
- umap/static/umap/locale/el.js +47 -47
- umap/static/umap/locale/el.json +47 -47
- umap/static/umap/locale/en.js +7 -1
- umap/static/umap/locale/en.json +7 -1
- umap/static/umap/locale/fa_IR.js +44 -44
- umap/static/umap/locale/fa_IR.json +44 -44
- umap/static/umap/locale/fr.js +8 -2
- umap/static/umap/locale/fr.json +8 -2
- umap/static/umap/locale/pt.js +17 -17
- umap/static/umap/locale/pt.json +17 -17
- umap/static/umap/locale/pt_PT.js +207 -207
- umap/static/umap/locale/pt_PT.json +207 -207
- umap/static/umap/locale/th_TH.js +25 -25
- umap/static/umap/locale/th_TH.json +25 -25
- umap/static/umap/map.css +107 -104
- umap/static/umap/nav.css +19 -10
- umap/static/umap/unittests/utils.js +230 -107
- umap/static/umap/vendors/csv2geojson/csv2geojson.js +62 -40
- umap/static/umap/vendors/markercluster/MarkerCluster.Default.css +1 -1
- umap/storage.py +1 -0
- umap/templates/404.html +5 -1
- umap/templates/500.html +3 -1
- umap/templates/auth/user_detail.html +8 -2
- umap/templates/auth/user_form.html +19 -10
- umap/templates/auth/user_stars.html +8 -2
- umap/templates/base.html +1 -0
- umap/templates/registration/login.html +18 -3
- umap/templates/umap/about.html +1 -0
- umap/templates/umap/about_summary.html +22 -7
- umap/templates/umap/components/alerts/alert.html +42 -21
- umap/templates/umap/content.html +2 -0
- umap/templates/umap/content_footer.html +6 -2
- umap/templates/umap/css.html +1 -0
- umap/templates/umap/dashboard_menu.html +15 -0
- umap/templates/umap/home.html +14 -4
- umap/templates/umap/js.html +4 -9
- umap/templates/umap/login_popup_end.html +10 -4
- umap/templates/umap/map_detail.html +8 -2
- umap/templates/umap/map_fragment.html +3 -1
- umap/templates/umap/map_init.html +2 -1
- umap/templates/umap/map_list.html +4 -3
- umap/templates/umap/map_table.html +36 -12
- umap/templates/umap/messages.html +0 -1
- umap/templates/umap/navigation.html +2 -1
- umap/templates/umap/password_change.html +5 -1
- umap/templates/umap/password_change_done.html +8 -2
- umap/templates/umap/search.html +8 -2
- umap/templates/umap/search_bar.html +1 -0
- umap/templates/umap/team_confirm_delete.html +19 -0
- umap/templates/umap/team_detail.html +27 -0
- umap/templates/umap/team_form.html +60 -0
- umap/templates/umap/user_dashboard.html +7 -9
- umap/templates/umap/user_teams.html +51 -0
- umap/tests/base.py +8 -1
- umap/tests/conftest.py +6 -0
- umap/tests/fixtures/test_circles_layer.geojson +219 -0
- umap/tests/fixtures/test_upload_georss.xml +20 -0
- umap/tests/integration/conftest.py +18 -4
- umap/tests/integration/helpers.py +12 -0
- umap/tests/integration/test_anonymous_owned_map.py +23 -0
- umap/tests/integration/test_basics.py +29 -0
- umap/tests/integration/test_caption.py +20 -0
- umap/tests/integration/test_circles_layer.py +69 -0
- umap/tests/integration/test_draw_polygon.py +110 -13
- umap/tests/integration/test_draw_polyline.py +8 -18
- umap/tests/integration/test_edit_datalayer.py +1 -1
- umap/tests/integration/test_import.py +64 -5
- umap/tests/integration/test_owned_map.py +21 -13
- umap/tests/integration/test_team.py +47 -0
- umap/tests/integration/test_tilelayer.py +19 -2
- umap/tests/integration/test_view_marker.py +28 -1
- umap/tests/integration/test_websocket_sync.py +5 -5
- umap/tests/test_datalayer.py +32 -7
- umap/tests/test_datalayer_views.py +1 -1
- umap/tests/test_map.py +30 -4
- umap/tests/test_map_views.py +2 -2
- umap/tests/test_statics.py +40 -0
- umap/tests/test_team_views.py +131 -0
- umap/tests/test_views.py +15 -1
- umap/urls.py +23 -13
- umap/views.py +116 -10
- {umap_project-2.5.1.dist-info → umap_project-2.6.0b0.dist-info}/METADATA +9 -9
- {umap_project-2.5.1.dist-info → umap_project-2.6.0b0.dist-info}/RECORD +177 -170
- umap/static/umap/js/umap.datalayer.permissions.js +0 -70
- umap/static/umap/js/umap.features.js +0 -1290
- umap/static/umap/js/umap.layer.js +0 -1837
- umap/static/umap/js/umap.permissions.js +0 -208
- umap/static/umap/js/umap.popup.js +0 -341
- umap/static/umap/test/TableEditor.js +0 -104
- umap/static/umap/vendors/leaflet/leaflet-src.js +0 -14512
- umap/static/umap/vendors/leaflet/leaflet-src.js.map +0 -1
- umap/static/umap/vendors/leaflet/leaflet.js +0 -6
- umap/static/umap/vendors/leaflet/leaflet.js.map +0 -1
- umap/static/umap/vendors/markercluster/WhereAreTheJavascriptFiles.txt +0 -5
- umap/static/umap/vendors/markercluster/leaflet.markercluster-src.js +0 -2718
- umap/static/umap/vendors/markercluster/leaflet.markercluster-src.js.map +0 -1
- umap/static/umap/vendors/toolbar/leaflet.toolbar-src.css +0 -117
- umap/static/umap/vendors/toolbar/leaflet.toolbar-src.js +0 -365
- umap/tests/integration/test_statics.py +0 -47
- {umap_project-2.5.1.dist-info → umap_project-2.6.0b0.dist-info}/WHEEL +0 -0
- {umap_project-2.5.1.dist-info → umap_project-2.6.0b0.dist-info}/entry_points.txt +0 -0
- {umap_project-2.5.1.dist-info → umap_project-2.6.0b0.dist-info}/licenses/LICENSE +0 -0
umap/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
VERSION = "2.
|
|
1
|
+
VERSION = "2.6.0b0"
|
umap/admin.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from django.contrib.gis import admin
|
|
2
2
|
|
|
3
|
-
from .models import DataLayer, Licence, Map, Pictogram, TileLayer
|
|
3
|
+
from .models import DataLayer, Licence, Map, Pictogram, Team, TileLayer
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class TileLayerAdmin(admin.ModelAdmin):
|
|
@@ -26,8 +26,13 @@ class PictogramAdmin(admin.ModelAdmin):
|
|
|
26
26
|
list_filter = ("category",)
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
class TeamAdmin(admin.ModelAdmin):
|
|
30
|
+
filter_horizontal = ("users",)
|
|
31
|
+
|
|
32
|
+
|
|
29
33
|
admin.site.register(Map, MapAdmin)
|
|
30
34
|
admin.site.register(DataLayer)
|
|
31
35
|
admin.site.register(Pictogram, PictogramAdmin)
|
|
32
36
|
admin.site.register(TileLayer, TileLayerAdmin)
|
|
33
37
|
admin.site.register(Licence)
|
|
38
|
+
admin.site.register(Team, TeamAdmin)
|
umap/context_processors.py
CHANGED
|
@@ -5,12 +5,13 @@ from . import VERSION
|
|
|
5
5
|
|
|
6
6
|
def settings(request):
|
|
7
7
|
return {
|
|
8
|
-
"
|
|
8
|
+
"UMAP_HELP_URL": djsettings.UMAP_HELP_URL,
|
|
9
9
|
"SITE_NAME": djsettings.SITE_NAME,
|
|
10
10
|
"SITE_URL": djsettings.SITE_URL,
|
|
11
11
|
"ENABLE_ACCOUNT_LOGIN": djsettings.ENABLE_ACCOUNT_LOGIN,
|
|
12
12
|
"UMAP_READONLY": djsettings.UMAP_READONLY,
|
|
13
13
|
"UMAP_DEMO_SITE": djsettings.UMAP_DEMO_SITE,
|
|
14
|
+
"UMAP_HOST_INFOS": djsettings.UMAP_HOST_INFOS,
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
|
umap/decorators.py
CHANGED
|
@@ -5,7 +5,7 @@ from django.http import HttpResponseForbidden
|
|
|
5
5
|
from django.shortcuts import get_object_or_404
|
|
6
6
|
from django.urls import reverse_lazy
|
|
7
7
|
|
|
8
|
-
from .models import Map
|
|
8
|
+
from .models import Map, Team
|
|
9
9
|
from .views import simple_json_response
|
|
10
10
|
|
|
11
11
|
LOGIN_URL = getattr(settings, "LOGIN_URL", "login")
|
|
@@ -35,7 +35,7 @@ def can_edit_map(view_func):
|
|
|
35
35
|
map_inst = get_object_or_404(Map, pk=kwargs["map_id"])
|
|
36
36
|
user = request.user
|
|
37
37
|
kwargs["map_inst"] = map_inst # Avoid rerequesting the map in the view
|
|
38
|
-
if map_inst.edit_status >= map_inst.
|
|
38
|
+
if map_inst.edit_status >= map_inst.COLLABORATORS:
|
|
39
39
|
can_edit = map_inst.can_edit(user=user, request=request)
|
|
40
40
|
if not can_edit:
|
|
41
41
|
if map_inst.owner and not user.is_authenticated:
|
|
@@ -60,3 +60,14 @@ def can_view_map(view_func):
|
|
|
60
60
|
return view_func(request, *args, **kwargs)
|
|
61
61
|
|
|
62
62
|
return wrapper
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def team_members_only(view_func):
|
|
66
|
+
@wraps(view_func)
|
|
67
|
+
def wrapper(request, *args, **kwargs):
|
|
68
|
+
team = get_object_or_404(Team, pk=kwargs["pk"])
|
|
69
|
+
if not request.user.is_authenticated or team not in request.user.teams.all():
|
|
70
|
+
return HttpResponseForbidden()
|
|
71
|
+
return view_func(request, *args, **kwargs)
|
|
72
|
+
|
|
73
|
+
return wrapper
|
umap/forms.py
CHANGED
|
@@ -6,7 +6,7 @@ from django.forms.utils import ErrorList
|
|
|
6
6
|
from django.template.defaultfilters import slugify
|
|
7
7
|
from django.utils.translation import gettext_lazy as _
|
|
8
8
|
|
|
9
|
-
from .models import DataLayer, Map
|
|
9
|
+
from .models import DataLayer, Map, Team
|
|
10
10
|
|
|
11
11
|
DEFAULT_LATITUDE = (
|
|
12
12
|
settings.LEAFLET_LATITUDE if hasattr(settings, "LEAFLET_LATITUDE") else 51
|
|
@@ -36,7 +36,7 @@ class SendLinkForm(forms.Form):
|
|
|
36
36
|
class UpdateMapPermissionsForm(forms.ModelForm):
|
|
37
37
|
class Meta:
|
|
38
38
|
model = Map
|
|
39
|
-
fields = ("edit_status", "editors", "share_status", "owner")
|
|
39
|
+
fields = ("edit_status", "editors", "share_status", "owner", "team")
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
class AnonymousMapPermissionsForm(forms.ModelForm):
|
|
@@ -110,3 +110,27 @@ class UserProfileForm(forms.ModelForm):
|
|
|
110
110
|
class Meta:
|
|
111
111
|
model = User
|
|
112
112
|
fields = ("username", "first_name", "last_name")
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class TeamMembersField(forms.ModelMultipleChoiceField):
|
|
116
|
+
def set_choices(self, choices):
|
|
117
|
+
iterator = self.iterator(self)
|
|
118
|
+
# Override queryset so to expose only selected choices:
|
|
119
|
+
# - we don't want a select with 100000 options
|
|
120
|
+
# - the select values will be used by the autocomplete widget to display
|
|
121
|
+
# already existing members of the team
|
|
122
|
+
iterator.queryset = choices
|
|
123
|
+
self.choices = iterator
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
class TeamForm(forms.ModelForm):
|
|
127
|
+
class Meta:
|
|
128
|
+
model = Team
|
|
129
|
+
fields = ["name", "description", "members"]
|
|
130
|
+
|
|
131
|
+
def __init__(self, *args, **kwargs):
|
|
132
|
+
super().__init__(*args, **kwargs)
|
|
133
|
+
self.fields["members"].set_choices(self.initial["members"])
|
|
134
|
+
self.fields["members"].widget.attrs["hidden"] = "hidden"
|
|
135
|
+
|
|
136
|
+
members = TeamMembersField(queryset=User.objects.all())
|
|
Binary file
|