umap-project 1.5.0__py3-none-any.whl → 1.6.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.
@@ -0,0 +1,50 @@
1
+ {% extends "umap/content.html" %}
2
+ {% load i18n %}
3
+ {% block maincontent %}
4
+ <div class="col wide">
5
+ <h2 class="section tabs">
6
+ <a href="{% url 'user_dashboard' %}">{% trans "My dashboard" %}</a> | {% trans "My profile" %}
7
+ </h2>
8
+ </div>
9
+ <div class="wrapper">
10
+ <div class="row">
11
+ {% if form.non_field_errors %}
12
+ <ul class="form-errors">
13
+ {% for error in form.non_field_errors %}<li>{{ error }}</li>{% endfor %}
14
+ </ul>
15
+ {% endif %}
16
+ <form id="user_form" method="post">
17
+ {% csrf_token %}
18
+ {{ form }}
19
+ <input type="submit" value="{% trans 'Save' %}" />
20
+ </form>
21
+ </div>
22
+ {% if backends.backends|length %}
23
+ <div class="row">
24
+ <h3>{% trans "Your current providers" %}</h3>
25
+ <ul>
26
+ {% for name in providers %}<li>{{ name|title }}</li>{% endfor %}
27
+ </ul>
28
+ </div>
29
+ <div class="row">
30
+ <h3>{% trans "Connect to another provider" %}</h3>
31
+ <p>
32
+ {% blocktrans %}It's a good habit to connect your account to more than one provider, in case one provider becomes unavailable, temporarily or even permanently.{% endblocktrans %}
33
+ </p>
34
+ <div>
35
+ <ul class="login-grid block-grid">
36
+ {% for name in backends.backends %}
37
+ {% if name not in providers %}
38
+ <li>
39
+ <a href="{% url "social:begin" name %}"
40
+ class="umap-login-popup login-{{ name }}"
41
+ title="{{ name|title }}"></a>
42
+ </li>
43
+ {% endif %}
44
+ {% endfor %}
45
+ </ul>
46
+ </div>
47
+ </div>
48
+ {% endif %}
49
+ </div>
50
+ {% endblock maincontent %}
@@ -6,7 +6,9 @@
6
6
  {% block maincontent %}
7
7
  {% trans "Search my maps" as placeholder %}
8
8
  <div class="col wide">
9
- <h2 class="section">{% trans "My dashboard" %}</h2>
9
+ <h2 class="section tabs">
10
+ {% trans "My dashboard" %} | <a href="{% url 'user_profile' %}">{% trans "My profile" %}</a>
11
+ </h2>
10
12
  {% include "umap/search_bar.html" with action=request.get_full_path placeholder=placeholder %}
11
13
  </div>
12
14
  <div class="wrapper">
umap/tests/base.py CHANGED
@@ -27,10 +27,11 @@ class TileLayerFactory(factory.django.DjangoModelFactory):
27
27
 
28
28
 
29
29
  class UserFactory(factory.django.DjangoModelFactory):
30
- username = 'Joe'
30
+ username = "Joe"
31
31
  email = factory.LazyAttribute(
32
- lambda a: '{0}@example.com'.format(a.username).lower())
33
- password = factory.PostGenerationMethodCall('set_password', '123123')
32
+ lambda a: "{0}@example.com".format(a.username).lower()
33
+ )
34
+ password = factory.PostGenerationMethodCall("set_password", "123123")
34
35
 
35
36
  class Meta:
36
37
  model = User
@@ -41,32 +42,32 @@ class MapFactory(factory.django.DjangoModelFactory):
41
42
  slug = "test-map"
42
43
  center = DEFAULT_CENTER
43
44
  settings = {
44
- 'geometry': {
45
- 'coordinates': [13.447265624999998, 48.94415123418794],
46
- 'type': 'Point'
45
+ "geometry": {
46
+ "coordinates": [13.447265624999998, 48.94415123418794],
47
+ "type": "Point",
47
48
  },
48
- 'properties': {
49
- 'datalayersControl': True,
50
- 'description': 'Which is just the Danube, at the end',
51
- 'displayCaptionOnLoad': False,
52
- 'displayDataBrowserOnLoad': False,
53
- 'displayPopupFooter': False,
54
- 'licence': '',
55
- 'miniMap': False,
56
- 'moreControl': True,
57
- 'name': 'Cruising on the Donau',
58
- 'scaleControl': True,
59
- 'tilelayer': {
60
- 'attribution': u'\xa9 OSM Contributors',
61
- 'maxZoom': 18,
62
- 'minZoom': 0,
63
- 'url_template': 'http://{s}.osm.fr/{z}/{x}/{y}.png'
49
+ "properties": {
50
+ "datalayersControl": True,
51
+ "description": "Which is just the Danube, at the end",
52
+ "displayCaptionOnLoad": False,
53
+ "displayDataBrowserOnLoad": False,
54
+ "displayPopupFooter": False,
55
+ "licence": "",
56
+ "miniMap": False,
57
+ "moreControl": True,
58
+ "name": "Cruising on the Donau",
59
+ "scaleControl": True,
60
+ "tilelayer": {
61
+ "attribution": "\xa9 OSM Contributors",
62
+ "maxZoom": 18,
63
+ "minZoom": 0,
64
+ "url_template": "http://{s}.osm.fr/{z}/{x}/{y}.png",
64
65
  },
65
- 'tilelayersControl': True,
66
- 'zoom': 7,
67
- 'zoomControl': True
66
+ "tilelayersControl": True,
67
+ "zoom": 7,
68
+ "zoomControl": True,
68
69
  },
69
- 'type': 'Feature'
70
+ "type": "Feature",
70
71
  }
71
72
 
72
73
  licence = factory.SubFactory(LicenceFactory)
@@ -81,7 +82,10 @@ class DataLayerFactory(factory.django.DjangoModelFactory):
81
82
  name = "test datalayer"
82
83
  description = "test description"
83
84
  display_on_load = True
84
- geojson = factory.django.FileField(data="""{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[13.68896484375,48.55297816440071]},"properties":{"_umap_options":{"color":"DarkCyan","iconClass":"Ball"},"name":"Here","description":"Da place anonymous again 755"}}],"_umap_options":{"displayOnLoad":true,"name":"Donau","id":926}}""") # noqa
85
+ settings = {"displayOnLoad": True, "browsable": True, name: "test datalayer"}
86
+ geojson = factory.django.FileField(
87
+ data="""{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[13.68896484375,48.55297816440071]},"properties":{"_umap_options":{"color":"DarkCyan","iconClass":"Ball"},"name":"Here","description":"Da place anonymous again 755"}}],"_umap_options":{"displayOnLoad":true,"name":"Donau","id":926}}"""
88
+ ) # noqa
85
89
 
86
90
  class Meta:
87
91
  model = DataLayer
@@ -90,7 +94,7 @@ class DataLayerFactory(factory.django.DjangoModelFactory):
90
94
  def login_required(response):
91
95
  assert response.status_code == 200
92
96
  j = json.loads(response.content.decode())
93
- assert 'login_required' in j
94
- redirect_url = reverse('login')
95
- assert j['login_required'] == redirect_url
97
+ assert "login_required" in j
98
+ redirect_url = reverse("login")
99
+ assert j["login_required"] == redirect_url
96
100
  return True
@@ -17,6 +17,7 @@ def post_data():
17
17
  return {
18
18
  "name": "name",
19
19
  "display_on_load": True,
20
+ "settings": '{"displayOnLoad": true, "browsable": true, "name": "name"}',
20
21
  "rank": 0,
21
22
  "geojson": '{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-3.1640625,53.014783245859235],[-3.1640625,51.86292391360244],[-0.50537109375,51.385495069223204],[1.16455078125,52.38901106223456],[-0.41748046875,53.91728101547621],[-2.109375,53.85252660044951],[-3.1640625,53.014783245859235]]]},"properties":{"_umap_options":{},"name":"Ho god, sounds like a polygouine"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[1.8017578124999998,51.16556659836182],[-0.48339843749999994,49.710272582105695],[-3.1640625,50.0923932109388],[-5.60302734375,51.998410382390325]]},"properties":{"_umap_options":{},"name":"Light line"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[0.63720703125,51.15178610143037]},"properties":{"_umap_options":{},"name":"marker he"}}],"_umap_options":{"displayOnLoad":true,"name":"new name","id":1668,"remoteData":{},"color":"LightSeaGreen","description":"test"}}',
22
23
  }
@@ -61,6 +62,7 @@ def test_update(client, datalayer, map, post_data):
61
62
  j = json.loads(response.content.decode())
62
63
  assert "id" in j
63
64
  assert datalayer.pk == j["id"]
65
+ assert j["browsable"] is True
64
66
  assert Path(modified_datalayer.geojson.path).exists()
65
67
 
66
68
 
umap/tests/test_views.py CHANGED
@@ -11,6 +11,8 @@ from django.test import RequestFactory
11
11
  from umap import VERSION
12
12
  from umap.views import validate_url
13
13
 
14
+ User = get_user_model()
15
+
14
16
 
15
17
  def get(target="http://osm.org/georss.xml", verb="get", **kwargs):
16
18
  defaults = {
@@ -141,7 +143,6 @@ def test_login_contains_form_if_enabled(client, settings):
141
143
  @pytest.mark.django_db
142
144
  def test_can_login_with_username_and_password_if_enabled(client, settings):
143
145
  settings.ENABLE_ACCOUNT_LOGIN = True
144
- User = get_user_model()
145
146
  user = User.objects.create(username="test")
146
147
  user.set_password("test")
147
148
  user.save()
@@ -279,3 +280,49 @@ def test_logout_should_return_redirect(client, user, settings):
279
280
  response = client.get(reverse("logout"))
280
281
  assert response.status_code == 302
281
282
  assert response["Location"] == "/"
283
+
284
+
285
+ @pytest.mark.django_db
286
+ def test_user_profile_is_restricted_to_logged_in(client):
287
+ response = client.get(reverse("user_profile"))
288
+ assert response.status_code == 302
289
+ assert response["Location"] == "/en/login/?next=/en/me/profile"
290
+
291
+
292
+ @pytest.mark.django_db
293
+ def test_user_profile_allows_to_edit_username(client, map):
294
+ client.login(username=map.owner.username, password="123123")
295
+ new_name = "newname"
296
+ response = client.post(
297
+ reverse("user_profile"), data={"username": new_name}, follow=True
298
+ )
299
+ assert response.status_code == 200
300
+ user = User.objects.get(pk=map.owner.pk)
301
+ assert user.username == new_name
302
+
303
+
304
+ @pytest.mark.django_db
305
+ def test_user_profile_cannot_set_to_existing_username(client, map, user2):
306
+ client.login(username=map.owner.username, password="123123")
307
+ response = client.post(
308
+ reverse("user_profile"), data={"username": user2.username}, follow=True
309
+ )
310
+ assert response.status_code == 200
311
+ user = User.objects.get(pk=map.owner.pk)
312
+ assert user.username == map.owner.username
313
+ assert user.username != user2.username
314
+
315
+
316
+ @pytest.mark.django_db
317
+ def test_user_profile_does_not_allow_to_edit_other_fields(client, map):
318
+ client.login(username=map.owner.username, password="123123")
319
+ new_email = "foo@bar.com"
320
+ response = client.post(
321
+ reverse("user_profile"),
322
+ data={"username": new_email, "is_superuser": True},
323
+ follow=True,
324
+ )
325
+ assert response.status_code == 200
326
+ user = User.objects.get(pk=map.owner.pk)
327
+ assert user.email != new_email
328
+ assert user.is_superuser is False
umap/urls.py CHANGED
@@ -103,6 +103,11 @@ i18n_urls += decorated_patterns(
103
103
  views.user_dashboard,
104
104
  name="user_dashboard",
105
105
  ),
106
+ re_path(
107
+ r"^me/profile$",
108
+ views.user_profile,
109
+ name="user_profile",
110
+ ),
106
111
  )
107
112
  map_urls = [
108
113
  re_path(
umap/views.py CHANGED
@@ -50,6 +50,7 @@ from .forms import (
50
50
  MapSettingsForm,
51
51
  SendLinkForm,
52
52
  UpdateMapPermissionsForm,
53
+ UserProfileForm,
53
54
  )
54
55
  from .models import DataLayer, Licence, Map, Pictogram, Star, TileLayer
55
56
  from .utils import get_uri_template, gzip_file, is_ajax
@@ -164,6 +165,24 @@ class About(Home):
164
165
  about = About.as_view()
165
166
 
166
167
 
168
+ class UserProfile(UpdateView):
169
+ model = User
170
+ form_class = UserProfileForm
171
+ success_url = reverse_lazy("user_profile")
172
+
173
+ def get_object(self):
174
+ return self.get_queryset().get(pk=self.request.user.pk)
175
+
176
+ def get_context_data(self, **kwargs):
177
+ kwargs.update(
178
+ {"providers": self.object.social_auth.values_list("provider", flat=True)}
179
+ )
180
+ return super().get_context_data(**kwargs)
181
+
182
+
183
+ user_profile = UserProfile.as_view()
184
+
185
+
167
186
  class UserMaps(PaginatorMixin, DetailView):
168
187
  model = User
169
188
  slug_url_kwarg = "identifier"
@@ -343,6 +362,8 @@ class AjaxProxy(View):
343
362
  return HttpResponseBadRequest("URL error")
344
363
  except InvalidURL:
345
364
  return HttpResponseBadRequest("Invalid URL")
365
+ except TimeoutError:
366
+ return HttpResponseBadRequest("Timeout")
346
367
  else:
347
368
  status_code = proxied_request.code
348
369
  mimetype = proxied_request.headers.get(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: umap-project
3
- Version: 1.5.0
3
+ Version: 1.6.0
4
4
  Summary: Create maps with OpenStreetMap layers in a minute and embed them in your site.
5
5
  Author-email: Yohan Boniface <yb@enix.org>
6
6
  Maintainer-email: David Larlet <david@larlet.fr>
@@ -1,17 +1,17 @@
1
- umap/__init__.py,sha256=yClZUx_D-Ip9vQfHBQOL3QZp5QY9TrjeJWoblVyob04,18
1
+ umap/__init__.py,sha256=GXL-pi95MCVByDlCjcR2QRfd6VmTmu5Erp222m3SkMU,18
2
2
  umap/admin.py,sha256=K6WlowHtPD8_LCSFqw0R_ug3sKg10FOL1ELVUQ9if1o,541
3
3
  umap/apps.py,sha256=5ssKqPUuNJlapaBmr4LY_HDb7J1NFCT3wzythxQOOfs,109
4
4
  umap/autocomplete.py,sha256=bFCooKTlTBIxVLQ11rDDuam90V11RyeyJZ2Z3j9S-OI,446
5
5
  umap/context_processors.py,sha256=HhRfnUElWwWCMk9vtXkyR3fpPcpagSpvRpqh8jYL8Lk,448
6
6
  umap/decorators.py,sha256=Z3u82BabG42Bpqtc49sW3Dv6wgHolsajUL36-hmZkD4,2021
7
7
  umap/fields.py,sha256=Zm8_2uAwdZx5tGOiTPOIXhsT__535tziKBJ-67GP2mw,869
8
- umap/forms.py,sha256=2I_-1We_6ZJjIafRoy4dI7zSVBnhPbefdIAT89kazZU,2731
8
+ umap/forms.py,sha256=dF8N9PgWKcahzbIJG2m-LVKPsT7SuByAYLVgBal3SKA,2880
9
9
  umap/managers.py,sha256=9p-EKFRoGUcDp-X3-Nr_fzu2DUENZGEx6KhbI1pqVYc,207
10
10
  umap/middleware.py,sha256=wXsu7RDH1HoJZwisSdAvUb5hntDhXdrUS26nY6Q6EVM,515
11
- umap/models.py,sha256=bLiVn_VgfzGRvC_zNsDDxRCGwDOfVW5P_fsM4hCMdh0,12494
12
- umap/urls.py,sha256=CXSIMTsLZvISHiATvtwvjPqtz9JAC_IFXvn6Qrah2Hw,5640
11
+ umap/models.py,sha256=D4XKhmztYYHiI6sQRjZ3wmdXD6F3o1GgKYoS8DQgEcA,12835
12
+ umap/urls.py,sha256=xw2LXrbR9RA53N_xnDXJ-516e0dcd0zmfcXB5NKH6u4,5742
13
13
  umap/utils.py,sha256=wvgLv3KvLrRzUnhD51RTNT9W6-iP9XDWpW5YAZ3FQWQ,4390
14
- umap/views.py,sha256=bsRdLza4cEjy5UA59v-GjZc8Hy3551HC9oO2kFttVxI,30728
14
+ umap/views.py,sha256=-c5GaeGyfVqs6VGJK1KmWaykoX0Vd3sBxoSKRqJOzZo,31303
15
15
  umap/wsgi.py,sha256=0G5LiAn7hXiqO30tpPf7z5EnY1ylz031ZlZY9vCRz-c,1152
16
16
  umap/bin/__init__.py,sha256=CQzUxX_hIgitZ_19KobD9afZYEN7brrao-RQmIUhq4o,256
17
17
  umap/locale/am_ET/LC_MESSAGES/django.mo,sha256=7cXkuzDl7TSplY2AUzYCj5LnniK-uhk4ySXK7k6_vE4,5688
@@ -35,7 +35,7 @@ umap/locale/de/LC_MESSAGES/django.po,sha256=Jx5AZKZwRYfXPYnp9kxRlp6C5vqZ7TuwTtKZ
35
35
  umap/locale/el/LC_MESSAGES/django.mo,sha256=HXz1ht5tUUeksBwZeBwOVSXj0K4nu7tLaGdzQnlJDzs,11826
36
36
  umap/locale/el/LC_MESSAGES/django.po,sha256=TA5gWpnFdNo2oZGM4IlkPp-11g6HUMzIQqpK_SoV21U,15479
37
37
  umap/locale/en/LC_MESSAGES/django.mo,sha256=UXCQbz2AxBvh-IQ7bGgjoBnijo8h9DfE9107A-2Mgkk,337
38
- umap/locale/en/LC_MESSAGES/django.po,sha256=ExRhBCDhVTbmfgJeHcZo8qX5vHGZfLuQi8MIK8zfWRA,8691
38
+ umap/locale/en/LC_MESSAGES/django.po,sha256=eWsO7xDOmO9PI1HJwnyiavMHw15TCujITYb6RjlB4b4,9270
39
39
  umap/locale/es/LC_MESSAGES/django.mo,sha256=v5lxNNh_h_VbuUlDUb3s4DUX7qD66-J0gRuVZ3mcckI,6444
40
40
  umap/locale/es/LC_MESSAGES/django.po,sha256=UGn8WFKF87M_EjLoO2CAvmYBoj_vSJkx-MabCmJ2LTc,11589
41
41
  umap/locale/et/LC_MESSAGES/django.mo,sha256=hlvK324DAkDVYqjwj3-cBEwK_H_fOFBel4Og8N6KUGY,5388
@@ -46,8 +46,8 @@ umap/locale/fa_IR/LC_MESSAGES/django.mo,sha256=tTNBAmrHa6SJ_mBAJPDPMKhqZe6DMUeeT
46
46
  umap/locale/fa_IR/LC_MESSAGES/django.po,sha256=P0K6SqleiwQT4YM5XCYKkMIbdbuX2oFX7FGNyzX7d3w,12770
47
47
  umap/locale/fi/LC_MESSAGES/django.mo,sha256=AhgB_K3QCa5X5pZbmK5T5wEob04-xLNwqZvwjno-zdg,5054
48
48
  umap/locale/fi/LC_MESSAGES/django.po,sha256=6v7crZti7a3SF3RapDCpi_i5itqoyNvrUOtPDGVnebE,10870
49
- umap/locale/fr/LC_MESSAGES/django.mo,sha256=mlaToXluhcwxsjrCK-qLiJuGhpOockOva9ThDf83tqo,8731
50
- umap/locale/fr/LC_MESSAGES/django.po,sha256=zLcjuZqWB53_p7A845v0vtD1kBY6tJu76RLMd8j7u8k,12612
49
+ umap/locale/fr/LC_MESSAGES/django.mo,sha256=8MXRuyyzqD1wHS50aVmQB1BjnTJ8c1Z7t4XLTSDHw94,9323
50
+ umap/locale/fr/LC_MESSAGES/django.po,sha256=B0EefC6_0BTzf1PNjXxP8IVGr7Hh9p7n-DeLs0zLAvU,13439
51
51
  umap/locale/gl/LC_MESSAGES/django.mo,sha256=zm5kr4Jo1tnzPKOUD9D0Qexy7EuDgMWfwMd0AXkfuGc,6429
52
52
  umap/locale/gl/LC_MESSAGES/django.po,sha256=pw48KwTEtmfU9m0du9D0z90MLqe8pNjYEkMzQqbBFwo,11267
53
53
  umap/locale/he/LC_MESSAGES/django.mo,sha256=X-3mF15bhLRBjhPie3tlnMkKZ5hDTIQrldVWdP6KvHg,7131
@@ -68,8 +68,8 @@ umap/locale/ko/LC_MESSAGES/django.mo,sha256=VYkDXuULCNYU7FpxT3SYywC0dxv2cjcPuvt1
68
68
  umap/locale/ko/LC_MESSAGES/django.po,sha256=aQmyX4IYS44b_AjgeI_kd73MNLkFTVkU86ioEvqKzIw,11512
69
69
  umap/locale/lt/LC_MESSAGES/django.mo,sha256=qeB21rG7QHXnYba3n9AwQYG2c1nSc1Oo79W1jdywksg,6127
70
70
  umap/locale/lt/LC_MESSAGES/django.po,sha256=YitVoUTbtFuAHGoHbzAUJUxS-f6lojAmuCfVJxCylPw,11167
71
- umap/locale/ms/LC_MESSAGES/django.mo,sha256=V1QBF4pKwv9R3t6-57r5R5kmuJlkqP8ijHTZBjN6veQ,8512
72
- umap/locale/ms/LC_MESSAGES/django.po,sha256=uod9KJoEXOCg_oxyCVycAHDsYFSp9735BPuASD_GFcI,12063
71
+ umap/locale/ms/LC_MESSAGES/django.mo,sha256=UetMdna6FO3YYudAuvb4iW9xXNarhg4LenOd8BrcKSY,9061
72
+ umap/locale/ms/LC_MESSAGES/django.po,sha256=4DM9NIDfoBzAhDpVRP0uBRnZhuH5OKDg8Yua1gX_7eA,12847
73
73
  umap/locale/nl/LC_MESSAGES/django.mo,sha256=5tqHswLjPVo8rM6Ke3xyXvDOq5LNdPxB-fvWRQUwez4,6225
74
74
  umap/locale/nl/LC_MESSAGES/django.po,sha256=MrCPF2-gtYBHS2sCpZwllXUVV1BckdvRaesHmlJsfRg,11059
75
75
  umap/locale/no/LC_MESSAGES/django.mo,sha256=ADQ1RdDyg19YZHw2wKl_bxEgMu_0wK7HaoYk_nsxXks,423
@@ -124,16 +124,17 @@ umap/migrations/0008_alter_map_settings.py,sha256=M0D22Bv2IQ9IZCZhb_ZT_bbAy-Hii1
124
124
  umap/migrations/0009_star.py,sha256=seS8Pl3GwS765kie_eAZcguD999469a3Z6hDVPCLjiQ,886
125
125
  umap/migrations/0010_alter_map_edit_status_alter_map_share_status.py,sha256=H0Bh0aRhvYMecydiCJdx5x5UdqMqj0R7nwuX9g5ilH0,757
126
126
  umap/migrations/0011_alter_map_edit_status_alter_map_share_status.py,sha256=p41w5o8BEXL5-ezjrxJ5RShn3AT4WWkVwcnGMsWX35k,885
127
+ umap/migrations/0012_datalayer_settings.py,sha256=uolQNiWeOudROb5WQUUrOeJvwQpWWFDCUQvOxrwdwec,488
127
128
  umap/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
129
  umap/settings/__init__.py,sha256=MgpPT599_iIuswqogF-hwCxmuCZXtKXNuEepjrj1aSs,1799
129
- umap/settings/base.py,sha256=ra1NnqDhf0Les0qVY_pMG8Rxr7DykXZwxbZIMpY6Tm4,9538
130
+ umap/settings/base.py,sha256=DNP4UYKd3sYEZU8aCHsxZK9Ku2wsatvXH4K6ZzlqNa4,9564
130
131
  umap/settings/dev.py,sha256=Ki7AspsILppU_H71UfjPxaWWysbM2HVtSmiO_YJOan4,386
131
132
  umap/settings/local.py.sample,sha256=-bO46KX1t1sDSpyd8e1hqM4ucbQElgpNK9gOfXmaJ1s,3200
132
133
  umap/static/.gitignore,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
134
  umap/static/favicon.ico,sha256=BWUrt1AqYOr1MxUastn5d8KJPZuFZoWY5B85YkngRv4,638
134
- umap/static/umap/base.css,sha256=3Ixbp8rerQL4gpaC_98LXGFUpUdf8VuWwTnJ1MqXuP0,17597
135
+ umap/static/umap/base.css,sha256=vQzidzNipw1GPMOGX0h5C7c6DciO18HtLqEqNx0g2WU,17707
135
136
  umap/static/umap/bitbucket.png,sha256=Z-xsnM3QOUn9tJQ0RjPXCpALghrzaDDZP7wSePSjSr8,9125
136
- umap/static/umap/content.css,sha256=QF1eGyFyQPCuqGddW7UE3KEcFz38rMS5Y-5v9VMClxs,6651
137
+ umap/static/umap/content.css,sha256=LGcpxfVkxoVGWBpz98sFOqkySkjLjUGrMn4J4r1nKeA,6759
137
138
  umap/static/umap/font.css,sha256=fYmTKNd_Ts6TrmBbnLRgyeUS4vpfxkEqhLR-pkd3KrA,904
138
139
  umap/static/umap/github.png,sha256=Yiw6VX71qO87vNgJaDuirn3JVlUwrzIpkT9vbtROg1o,1564
139
140
  umap/static/umap/map.css,sha256=npwJ__2bQ0b6-e4hdISCvL0r8lV3dx-qJb3FZJ5oM5w,34626
@@ -165,13 +166,13 @@ umap/static/umap/img/source/16.svg,sha256=RH91RsuB2YPCoipZIKFLTPO3LHy0-m8ryJal3k
165
166
  umap/static/umap/img/source/24-white.svg,sha256=e-q7GZR_soLjgEziKuX1tnebyPAlEPExF0MtcK_8hlc,29251
166
167
  umap/static/umap/img/source/24.svg,sha256=rocP2xyMQdigy8noiipCM8hJNOc9tvF4uoXUPFBAjxY,38901
167
168
  umap/static/umap/js/umap.autocomplete.js,sha256=BwFdzOAzl_61JJMIM8CW2x2v78oxRvZZ7XQY8f53QVk,7937
168
- umap/static/umap/js/umap.controls.js,sha256=t_pgWIM2ie3PgXFjB3MsoyUc6kVXYC2s4b2v0Vv7qmY,47365
169
+ umap/static/umap/js/umap.controls.js,sha256=yvAVhxMkzR2xL_yuLRb0-aBtM60KvIoCctKxe5G6gIo,47614
169
170
  umap/static/umap/js/umap.core.js,sha256=BzJqNE9DfCh2PPxNOU2nCUit6Gnw0EMQHPOlH6U89J4,21106
170
171
  umap/static/umap/js/umap.features.js,sha256=VrS1lqkLIQR2JOmqCHRnQXt748KihIHniZG5oVB7rh0,33110
171
172
  umap/static/umap/js/umap.forms.js,sha256=bDYSzwX1SJOAPjEtV46M9y9qGCoUcBqUi3G6VCevX4Q,29357
172
173
  umap/static/umap/js/umap.icon.js,sha256=J_XqNkpHVSU0De8eihKtUmmflFJNB-9SmUU4Ka6c868,6339
173
- umap/static/umap/js/umap.js,sha256=neI46NX-rwrxahWVrBtuVznrOimM1zPHgs3SicpTxCI,62272
174
- umap/static/umap/js/umap.layer.js,sha256=U-YzlL6mXX2KiroPq24MJ-6OAz_akMdEdTV0OLJ1zcQ,34869
174
+ umap/static/umap/js/umap.js,sha256=39cWkQ2CXpVWJMXHkPTzPHE7DB09Bi4-k7NZSKqKCic,62417
175
+ umap/static/umap/js/umap.layer.js,sha256=tVjckbtCiExJoP3xq4L5kaZY1VBt9Ok42PnW5y31Q5I,35002
175
176
  umap/static/umap/js/umap.permissions.js,sha256=zU4i9a5vj5C7bJJOm9Yj_XFE21LV8Az038Kxc_RsKDA,5977
176
177
  umap/static/umap/js/umap.popup.js,sha256=4MEEfSegR5E64qpDBUXndB5x1_800_nb8O2zA73sKA0,6631
177
178
  umap/static/umap/js/umap.slideshow.js,sha256=P5zByJfMJXROMmFLdSbVqATP0Mf6AGx4QtYpiCvhV-4,4421
@@ -281,14 +282,14 @@ umap/static/umap/test/.eslintrc,sha256=zxYJhhVZ0wLRZ5qxM3yYJTGq_c134VHa8J2hplugq
281
282
  umap/static/umap/test/Controls.js,sha256=g48YWKBuKbzo3puXmypL17pfz_0aCVsgrxplSEHx1zQ,3512
282
283
  umap/static/umap/test/DataLayer.js,sha256=XolZW2mM8yFNi2QvmAYBUOJ0ViJx-Ln2nr2B78Cys9E,14730
283
284
  umap/static/umap/test/Feature.js,sha256=4nu67au4ONpDMQhCD5NA4LLZhqR1dOAmtD1kAasUE64,11514
284
- umap/static/umap/test/Map.js,sha256=I3Zi80wdhBJAsY9dfkK3uIne4DnEL1Fhc9Pk6yfUZpM,16802
285
+ umap/static/umap/test/Map.js,sha256=yjzMJiEYBKzMtOQDTJUi3s2STodKxhtzIk9fwXJCVVY,16789
285
286
  umap/static/umap/test/Marker.js,sha256=cuMzi2s6yJ4v_kWsn5vOnCfnWiFip__0RE3G-JqJuQ4,4179
286
287
  umap/static/umap/test/Permissions.js,sha256=mhw9QX8S0JaPID1LooEIjtuKp0Bz7139IMUVNtPjiIM,2314
287
288
  umap/static/umap/test/Polygon.js,sha256=EcyZ-Gnv_kOs3FVhN9O77w_qX4WozQPDtHedRaUduxA,12614
288
289
  umap/static/umap/test/Polyline.js,sha256=mceegl3RoQ_WJA3UPZrTwXvnOAVD2Amw6zIzKe69nU4,13986
289
290
  umap/static/umap/test/TableEditor.js,sha256=t0TJvhMLAu4g1lfereKWODz0G8rK4KspZn7xTWZIKFk,3216
290
291
  umap/static/umap/test/Util.js,sha256=2vzXkaEcqxJohnNK0w1qqAkiw3MoSRR-KBHeaDJCslg,17646
291
- umap/static/umap/test/_pre.js,sha256=SKbbFBxckbg-uvCF3keesU6IejZ53qqsY6ABCq3QPJY,11187
292
+ umap/static/umap/test/_pre.js,sha256=1WkGEAlFqo9gqyo4jvAdSvP8Np4uEWKOdNqiAAw_nTk,11332
292
293
  umap/static/umap/test/index.html,sha256=1ltcDiaIT9WVC6vEgpNQ57WoCKCmkMIZXWzVm9vWRLI,5318
293
294
  umap/static/umap/vendors/choropleth/choropleth.js,sha256=gayHzV6SB_MNdm48-ZANMOcAFkXw_rqaDUYkOWW0EkI,57721
294
295
  umap/static/umap/vendors/chroma/chroma.min.js,sha256=oZqg3zt5dAKHJLJmbYMRoias7cZakJR8e8Vu7LmjZ60,46174
@@ -316,7 +317,7 @@ umap/static/umap/vendors/heat/leaflet-heat.js,sha256=65UqrlgGoRAnKfKRuriH3eeDrOh
316
317
  umap/static/umap/vendors/i18n/Leaflet.i18n.js,sha256=mLk62s8Z38FaDeyVvN8lFRaF6eWom4Xd12wozik1kkU,1305
317
318
  umap/static/umap/vendors/leaflet/leaflet-src.esm.js,sha256=Oe6TRk8R_jhHE35QwNyBifcGxGDjaYnqeHG_fVQPMwY,424589
318
319
  umap/static/umap/vendors/leaflet/leaflet-src.esm.js.map,sha256=lxY34ye1PfsolFQ8pTsEtlgBJ4tW7panCBRsm35HNbs,866200
319
- umap/static/umap/vendors/leaflet/leaflet-src.js,sha256=tPonvXioSHRQt1-4ztWR5mz_1KG1X3yHNzVXprP2gLo,450229
320
+ umap/static/umap/vendors/leaflet/leaflet-src.js,sha256=Y0Ki5d8X0X1H2YiS590G4GgQTUnf6kP26s5XsJ2w76Q,455791
320
321
  umap/static/umap/vendors/leaflet/leaflet-src.js.map,sha256=l7cBxd_w6YZOXEWKixXC7DN4ejJsXed7kI-eoTvi1Wo,866292
321
322
  umap/static/umap/vendors/leaflet/leaflet.css,sha256=p4NxAoJBhIIN-hmNHrzRCf9tD_miZyoHS5obTRR9BMY,14806
322
323
  umap/static/umap/vendors/leaflet/leaflet.js,sha256=20nQCchB9co0qIjJZRGuk2_Z9VM-kNiyxNV1lvTlZBo,147552
@@ -358,6 +359,7 @@ umap/templates/404.html,sha256=chFp1sDPind5B4cXRY3Cvd6WXw-RBfN3MIujrWajjK4,381
358
359
  umap/templates/500.html,sha256=dc0t0omG21JQCesEqV1SLrZ7RNXGtk9Diq5W9pKSAEs,5186
359
360
  umap/templates/base.html,sha256=LXH2AZt9ZfL0TMTjrzumh2c6ZCXB_8NQtztxJwbPUbU,968
360
361
  umap/templates/auth/user_detail.html,sha256=feuzzlA6QatSUI4g57JSGWViMM6iAydesVls-8J9UUc,491
362
+ umap/templates/auth/user_form.html,sha256=YaHmxzLz7DHFprOAejcGp7ntfe7VTuXkv9pJEXljFCw,1692
361
363
  umap/templates/auth/user_stars.html,sha256=UE8XnvH48ak27k42hAQviZbj-Q2DNiz1BtSb1cwCGa4,511
362
364
  umap/templates/registration/login.html,sha256=0xthmYnxZ0RtjeAiTHpOvl874KW0kC9g9qCr6xNO4qw,1175
363
365
  umap/templates/umap/about.html,sha256=ycCW4EFTJMjLF9YT6xJ7Kqpey4sxozQyVTUx5l48kJo,127
@@ -383,21 +385,21 @@ umap/templates/umap/password_change_done.html,sha256=LNi8aPMtQCZyG7u1BD4eYnazufK
383
385
  umap/templates/umap/search.html,sha256=g35uiuw2iCPpSm61QoppSift0ZcQbu4E-mhoEHzuSUA,804
384
386
  umap/templates/umap/search_bar.html,sha256=PK4aWVIjEDcM7XcRGTLG1lMyrJce5czZoEERzQuPKVY,612
385
387
  umap/templates/umap/success.html,sha256=3FG4yWwtdF3zvVWQ2ZAjCkgv0kcSNZlUjgYy_b-X_CI,3
386
- umap/templates/umap/user_dashboard.html,sha256=2kX_ZIiETXkgGk6oEx-2sDuPdLyKfOBbrxUlz-tq2rE,757
388
+ umap/templates/umap/user_dashboard.html,sha256=RkYrKo7KT4UAUEdOUYWS_YaN71sgsF2Nxv1CY9-IIRo,840
387
389
  umap/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
388
390
  umap/templatetags/umap_tags.py,sha256=hhv8hYKX5qEOzwn4dmwMy57okqj1Pv0EH7rdrMpYnOY,2405
389
391
  umap/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
390
- umap/tests/base.py,sha256=g2veLUp-cqoXctJyhXKR7Y1gTSzXVsoHZNuoQzU199Y,2945
392
+ umap/tests/base.py,sha256=YdBPuOAs-caCANTNYmxgULq3NZn_YrZu4tmeCtWJGvM,3049
391
393
  umap/tests/conftest.py,sha256=DGpAsyPfB-6PK4KacXC7E0GWqI0kWcHQ_reimEmkCHs,1466
392
394
  umap/tests/settings.py,sha256=LxZlXn5etLPrpp5KttjHTIFQfPCJ0vmt4Fp4eOBXjv4,453
393
395
  umap/tests/test_datalayer.py,sha256=eE7F_oyjR6IM93hCBRwWbpEk9wxgTjwnnw3K3k5MoJ4,2870
394
- umap/tests/test_datalayer_views.py,sha256=YEwd2uSBNQuUoRq3nitZLbMT48AVJwt6kOZlnnVebvc,7724
396
+ umap/tests/test_datalayer_views.py,sha256=eqsAGyg0eIwfsENLSrVqaQwWoeDza_FN1E9fX2zOYKQ,7840
395
397
  umap/tests/test_licence.py,sha256=BxNY3gdKhIoc2u5OPmAkmjCp0jJN-Jm-uPOfAZlpOHA,339
396
398
  umap/tests/test_map.py,sha256=QzNjNSJvqVsdB_cdh0sfkYtJK_S3uxmqDuHCXOEYDj8,3672
397
399
  umap/tests/test_map_views.py,sha256=Qtfy4WeLURgJAquy2NhuIQPPwMWqT9w49qabes2hSVw,21981
398
400
  umap/tests/test_tilelayer.py,sha256=thhM7UbdMAnpvRJyFL8fxCT4cvh_RHdGOwj43H8YmDI,605
399
401
  umap/tests/test_utils.py,sha256=noh-AFL3qV-dNZYr8L1acsYC02SI710Bq2ZXV-jBEzk,407
400
- umap/tests/test_views.py,sha256=cqP0QgrXsY7dW6Q3HFa2Q19evhLAeeJgTuAPJIdO8Gw,8744
402
+ umap/tests/test_views.py,sha256=v2m7nnlweIiy6ngHVrZEPj-5mNBik2YMKWy7B3kPx_w,10336
401
403
  umap/tests/fixtures/test_upload_data.csv,sha256=b4RQw68ixs9UMj8TlTucV5YSfbactWhLLuE1yCKUTAY,109
402
404
  umap/tests/fixtures/test_upload_data.gpx,sha256=sIfeKEGxYikzg121qBdkBIVTFpuYh8q2-yWZOZwbu38,674
403
405
  umap/tests/fixtures/test_upload_data.json,sha256=t4PmJtVDhyI1x-E1a36jD8YVSa87T-Vtg8eBmHfQ4KQ,5650
@@ -405,8 +407,8 @@ umap/tests/fixtures/test_upload_data.kml,sha256=t66ms8oNI3999bhRJx01mn-UuHeqWoVY
405
407
  umap/tests/fixtures/test_upload_empty_coordinates.json,sha256=-mJ_1orzUAROfE4PXchHXyqxjS-q4tDfvEFPllJiHFU,786
406
408
  umap/tests/fixtures/test_upload_missing_name.json,sha256=klSMHb6laTghzU4AdIG1_p5UZ1LbAJCCKnJea0qEFAI,4566
407
409
  umap/tests/fixtures/test_upload_non_linear_ring.json,sha256=WOR0NnJHNUUW6VKzZyIxU7WL1llnAmEVJwCWla6XOds,1525
408
- umap_project-1.5.0.dist-info/METADATA,sha256=XmRcoRwh6UlzGBs3iC1XtMqp2Uwfe_b1Ujo2NopSQ14,2819
409
- umap_project-1.5.0.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
410
- umap_project-1.5.0.dist-info/entry_points.txt,sha256=gz-KDQfEsMLBae8ABOD3foJsCYGPW1tA4Y394R_1RW8,39
411
- umap_project-1.5.0.dist-info/licenses/LICENSE,sha256=BtMQT5EWvEua8jhXIrm2qfP8dmRFsMqCrJtq4k9Pb34,482
412
- umap_project-1.5.0.dist-info/RECORD,,
410
+ umap_project-1.6.0.dist-info/METADATA,sha256=Kakz9ZQPq3CWZ2In3h79xosW8F9HOVAXV3Qrd3aI-AI,2819
411
+ umap_project-1.6.0.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
412
+ umap_project-1.6.0.dist-info/entry_points.txt,sha256=gz-KDQfEsMLBae8ABOD3foJsCYGPW1tA4Y394R_1RW8,39
413
+ umap_project-1.6.0.dist-info/licenses/LICENSE,sha256=BtMQT5EWvEua8jhXIrm2qfP8dmRFsMqCrJtq4k9Pb34,482
414
+ umap_project-1.6.0.dist-info/RECORD,,