umap-project 1.11.0__py3-none-any.whl → 1.11.1__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.

Files changed (55) hide show
  1. umap/__init__.py +1 -1
  2. umap/admin.py +7 -3
  3. umap/autocomplete.py +3 -5
  4. umap/bin/__init__.py +2 -5
  5. umap/decorators.py +4 -5
  6. umap/forms.py +5 -5
  7. umap/locale/en/LC_MESSAGES/django.po +14 -14
  8. umap/management/commands/generate_js_locale.py +9 -11
  9. umap/management/commands/import_pictograms.py +1 -1
  10. umap/managers.py +5 -3
  11. umap/middleware.py +2 -3
  12. umap/migrations/0001_initial.py +204 -56
  13. umap/migrations/0002_tilelayer_tms.py +3 -4
  14. umap/migrations/0003_add_tilelayer.py +13 -9
  15. umap/migrations/0004_add_licence.py +3 -6
  16. umap/migrations/0005_remove_map_tilelayer.py +3 -4
  17. umap/migrations/0006_auto_20190407_0719.py +6 -5
  18. umap/migrations/0007_auto_20190416_1757.py +13 -5
  19. umap/migrations/0008_alter_map_settings.py +0 -1
  20. umap/migrations/0009_star.py +27 -8
  21. umap/migrations/0010_alter_map_edit_status_alter_map_share_status.py +20 -8
  22. umap/migrations/0011_alter_map_edit_status_alter_map_share_status.py +21 -8
  23. umap/migrations/0014_map_created_at.py +1 -1
  24. umap/models.py +6 -6
  25. umap/settings/base.py +1 -4
  26. umap/static/umap/base.css +2 -0
  27. umap/static/umap/js/umap.core.js +2 -0
  28. umap/static/umap/js/umap.features.js +2 -2
  29. umap/static/umap/js/umap.js +9 -5
  30. umap/static/umap/js/umap.layer.js +3 -2
  31. umap/static/umap/map.css +21 -12
  32. umap/static/umap/vendors/formbuilder/Leaflet.FormBuilder.js +13 -1
  33. umap/templates/auth/user_form.html +2 -2
  34. umap/templates/base.html +9 -3
  35. umap/templates/umap/map_table.html +3 -3
  36. umap/templatetags/umap_tags.py +32 -34
  37. umap/tests/base.py +2 -1
  38. umap/tests/conftest.py +0 -1
  39. umap/tests/integration/test_picto.py +1 -1
  40. umap/tests/integration/test_slideshow.py +70 -0
  41. umap/tests/settings.py +7 -5
  42. umap/tests/test_datalayer.py +7 -6
  43. umap/tests/test_map.py +6 -5
  44. umap/tests/test_map_views.py +4 -10
  45. umap/tests/test_tilelayer.py +17 -11
  46. umap/tests/test_views.py +7 -6
  47. umap/urls.py +3 -3
  48. umap/utils.py +1 -2
  49. umap/views.py +11 -23
  50. umap/wsgi.py +2 -2
  51. {umap_project-1.11.0.dist-info → umap_project-1.11.1.dist-info}/METADATA +11 -9
  52. {umap_project-1.11.0.dist-info → umap_project-1.11.1.dist-info}/RECORD +55 -54
  53. {umap_project-1.11.0.dist-info → umap_project-1.11.1.dist-info}/WHEEL +0 -0
  54. {umap_project-1.11.0.dist-info → umap_project-1.11.1.dist-info}/entry_points.txt +0 -0
  55. {umap_project-1.11.0.dist-info → umap_project-1.11.1.dist-info}/licenses/LICENSE +0 -0
umap/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION = "1.11.0"
1
+ VERSION = "1.11.1"
umap/admin.py CHANGED
@@ -1,10 +1,14 @@
1
1
  from django.contrib.gis import admin
2
- from .models import Map, DataLayer, Pictogram, TileLayer, Licence
2
+
3
+ from .models import DataLayer, Licence, Map, Pictogram, TileLayer
3
4
 
4
5
 
5
6
  class TileLayerAdmin(admin.ModelAdmin):
6
- list_display = ('name', 'rank', )
7
- list_editable = ('rank', )
7
+ list_display = (
8
+ "name",
9
+ "rank",
10
+ )
11
+ list_editable = ("rank",)
8
12
 
9
13
 
10
14
  class MapAdmin(admin.GISModelAdmin):
umap/autocomplete.py CHANGED
@@ -1,11 +1,9 @@
1
+ from agnocomplete.core import AgnocompleteModel
2
+ from agnocomplete.register import register
1
3
  from django.conf import settings
2
4
  from django.contrib.auth import get_user_model
3
5
 
4
6
 
5
- from agnocomplete.register import register
6
- from agnocomplete.core import AgnocompleteModel
7
-
8
-
9
7
  @register
10
8
  class AutocompleteUser(AgnocompleteModel):
11
9
  model = get_user_model()
@@ -13,5 +11,5 @@ class AutocompleteUser(AgnocompleteModel):
13
11
 
14
12
  def item(self, current_item):
15
13
  data = super().item(current_item)
16
- data['url'] = current_item.get_url()
14
+ data["url"] = current_item.get_url()
17
15
  return data
umap/bin/__init__.py CHANGED
@@ -5,12 +5,9 @@ from django.core import management
5
5
 
6
6
 
7
7
  def main():
8
- os.environ.setdefault(
9
- "DJANGO_SETTINGS_MODULE",
10
- "umap.settings"
11
- )
8
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "umap.settings")
12
9
  management.execute_from_command_line()
13
10
 
14
11
 
15
- if __name__ == '__main__':
12
+ if __name__ == "__main__":
16
13
  main()
umap/decorators.py CHANGED
@@ -1,13 +1,12 @@
1
1
  from functools import wraps
2
2
 
3
- from django.urls import reverse_lazy
4
- from django.shortcuts import get_object_or_404
5
- from django.http import HttpResponseForbidden
6
3
  from django.conf import settings
4
+ from django.http import HttpResponseForbidden
5
+ from django.shortcuts import get_object_or_404
6
+ from django.urls import reverse_lazy
7
7
 
8
- from .views import simple_json_response
9
8
  from .models import Map
10
-
9
+ from .views import simple_json_response
11
10
 
12
11
  LOGIN_URL = getattr(settings, "LOGIN_URL", "login")
13
12
  LOGIN_URL = reverse_lazy(LOGIN_URL) if not LOGIN_URL.startswith("/") else LOGIN_URL
umap/forms.py CHANGED
@@ -1,12 +1,12 @@
1
1
  from django import forms
2
- from django.contrib.gis.geos import Point
3
- from django.contrib.auth import get_user_model
4
- from django.utils.translation import gettext_lazy as _
5
- from django.template.defaultfilters import slugify
6
2
  from django.conf import settings
3
+ from django.contrib.auth import get_user_model
4
+ from django.contrib.gis.geos import Point
7
5
  from django.forms.utils import ErrorList
6
+ from django.template.defaultfilters import slugify
7
+ from django.utils.translation import gettext_lazy as _
8
8
 
9
- from .models import Map, DataLayer
9
+ from .models import DataLayer, Map
10
10
 
11
11
  DEFAULT_LATITUDE = (
12
12
  settings.LEAFLET_LATITUDE if hasattr(settings, "LEAFLET_LATITUDE") else 51
@@ -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: 2023-11-20 10:27+0000\n"
11
+ "POT-Creation-Date: 2023-11-27 08:30+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"
@@ -29,7 +29,7 @@ msgstr ""
29
29
  msgid "Inherit"
30
30
  msgstr ""
31
31
 
32
- #: middleware.py:14
32
+ #: middleware.py:13
33
33
  msgid "Site is readonly for maintenance"
34
34
  msgstr ""
35
35
 
@@ -290,7 +290,7 @@ msgstr ""
290
290
  msgid "You are logged in. Continuing..."
291
291
  msgstr ""
292
292
 
293
- #: templates/umap/map_list.html:9 views.py:302
293
+ #: templates/umap/map_list.html:9 views.py:290
294
294
  msgid "by"
295
295
  msgstr ""
296
296
 
@@ -431,52 +431,52 @@ msgstr ""
431
431
  msgid "You have no map yet."
432
432
  msgstr ""
433
433
 
434
- #: views.py:307
434
+ #: views.py:295
435
435
  msgid "View the map"
436
436
  msgstr ""
437
437
 
438
- #: views.py:682
438
+ #: views.py:670
439
439
  msgid "Map has been updated!"
440
440
  msgstr ""
441
441
 
442
- #: views.py:707
442
+ #: views.py:695
443
443
  msgid "Map editors updated with success!"
444
444
  msgstr ""
445
445
 
446
- #: views.py:745
446
+ #: views.py:733
447
447
  #, python-format
448
448
  msgid "The uMap edit link for your map: %(map_name)s"
449
449
  msgstr ""
450
450
 
451
- #: views.py:748
451
+ #: views.py:736
452
452
  #, python-format
453
453
  msgid "Here is your secret edit link: %(link)s"
454
454
  msgstr ""
455
455
 
456
- #: views.py:754
456
+ #: views.py:742
457
457
  #, python-format
458
458
  msgid "Email sent to %(email)s"
459
459
  msgstr ""
460
460
 
461
- #: views.py:765
461
+ #: views.py:753
462
462
  msgid "Only its owner can delete the map."
463
463
  msgstr ""
464
464
 
465
- #: views.py:788
465
+ #: views.py:776
466
466
  #, python-format
467
467
  msgid ""
468
468
  "Your map has been cloned! If you want to edit this map from another "
469
469
  "computer, please use this link: %(anonymous_url)s"
470
470
  msgstr ""
471
471
 
472
- #: views.py:793
472
+ #: views.py:781
473
473
  msgid "Congratulations, your map has been cloned!"
474
474
  msgstr ""
475
475
 
476
- #: views.py:982
476
+ #: views.py:970
477
477
  msgid "Layer successfully deleted."
478
478
  msgstr ""
479
479
 
480
- #: views.py:1004
480
+ #: views.py:992
481
481
  msgid "Permissions updated with success!"
482
482
  msgstr ""
@@ -1,24 +1,23 @@
1
1
  from pathlib import Path
2
2
 
3
- from django.core.management.base import BaseCommand
4
3
  from django.conf import settings
4
+ from django.core.management.base import BaseCommand
5
5
  from django.template.loader import render_to_string
6
6
  from django.utils.translation import to_locale
7
7
 
8
- ROOT = Path(settings.PROJECT_DIR) / 'static/umap/locale/'
8
+ ROOT = Path(settings.PROJECT_DIR) / "static/umap/locale/"
9
9
 
10
10
 
11
11
  class Command(BaseCommand):
12
-
13
12
  def handle(self, *args, **options):
14
- self.verbosity = options['verbosity']
13
+ self.verbosity = options["verbosity"]
15
14
  for code, name in settings.LANGUAGES:
16
15
  code = to_locale(code)
17
16
  if self.verbosity > 0:
18
17
  print("Processing", name)
19
- path = ROOT / '{code}.json'.format(code=code)
18
+ path = ROOT / "{code}.json".format(code=code)
20
19
  if not path.exists():
21
- print(path, 'does not exist.', 'Skipping')
20
+ print(path, "does not exist.", "Skipping")
22
21
  else:
23
22
  with path.open(encoding="utf-8") as f:
24
23
  if self.verbosity > 1:
@@ -26,12 +25,11 @@ class Command(BaseCommand):
26
25
  self.render(code, f.read())
27
26
 
28
27
  def render(self, code, json):
29
- path = ROOT / '{code}.js'.format(code=code)
28
+ path = ROOT / "{code}.js".format(code=code)
30
29
  with path.open("w", encoding="utf-8") as f:
31
- content = render_to_string('umap/locale.js', {
32
- "locale": json,
33
- "locale_code": code
34
- })
30
+ content = render_to_string(
31
+ "umap/locale.js", {"locale": json, "locale_code": code}
32
+ )
35
33
  if self.verbosity > 1:
36
34
  print("Exporting to", path)
37
35
  f.write(content)
@@ -59,7 +59,7 @@ class Command(BaseCommand):
59
59
  else:
60
60
  picto = Pictogram()
61
61
  picto.name = name
62
- if (path.name != self.path.name): # Subfolders only
62
+ if path.name != self.path.name: # Subfolders only
63
63
  picto.category = path.name
64
64
  picto.attribution = self.attribution
65
65
  with (path / filename).open("rb") as f:
umap/managers.py CHANGED
@@ -2,7 +2,9 @@ from django.db.models import Manager
2
2
 
3
3
 
4
4
  class PublicManager(Manager):
5
-
6
5
  def get_queryset(self):
7
- return super(PublicManager, self).get_queryset().filter(
8
- share_status=self.model.PUBLIC)
6
+ return (
7
+ super(PublicManager, self)
8
+ .get_queryset()
9
+ .filter(share_status=self.model.PUBLIC)
10
+ )
umap/middleware.py CHANGED
@@ -5,13 +5,12 @@ from django.utils.translation import gettext as _
5
5
 
6
6
 
7
7
  def readonly_middleware(get_response):
8
-
9
8
  if not settings.UMAP_READONLY:
10
9
  raise MiddlewareNotUsed
11
10
 
12
11
  def middleware(request):
13
- if request.method not in ['GET', 'OPTIONS']:
14
- return HttpResponseForbidden(_('Site is readonly for maintenance'))
12
+ if request.method not in ["GET", "OPTIONS"]:
13
+ return HttpResponseForbidden(_("Site is readonly for maintenance"))
15
14
 
16
15
  return get_response(request)
17
16
 
@@ -1,15 +1,15 @@
1
1
  # Generated by Django 2.0.5 on 2018-05-19 09:27
2
2
 
3
- from django.conf import settings
4
3
  import django.contrib.gis.db.models.fields
5
- from django.db import migrations, models
6
4
  import django.db.models.deletion
5
+ from django.conf import settings
6
+ from django.db import migrations, models
7
+
7
8
  import umap.fields
8
9
  import umap.models
9
10
 
10
11
 
11
12
  class Migration(migrations.Migration):
12
-
13
13
  initial = True
14
14
 
15
15
  dependencies = [
@@ -18,90 +18,238 @@ class Migration(migrations.Migration):
18
18
 
19
19
  operations = [
20
20
  migrations.CreateModel(
21
- name='DataLayer',
21
+ name="DataLayer",
22
22
  fields=[
23
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
24
- ('name', models.CharField(max_length=200, verbose_name='name')),
25
- ('description', models.TextField(blank=True, null=True, verbose_name='description')),
26
- ('geojson', models.FileField(blank=True, null=True, upload_to=umap.models.upload_to)),
27
- ('display_on_load', models.BooleanField(default=False, help_text='Display this layer on load.', verbose_name='display on load')),
28
- ('rank', models.SmallIntegerField(default=0)),
23
+ (
24
+ "id",
25
+ models.AutoField(
26
+ auto_created=True,
27
+ primary_key=True,
28
+ serialize=False,
29
+ verbose_name="ID",
30
+ ),
31
+ ),
32
+ ("name", models.CharField(max_length=200, verbose_name="name")),
33
+ (
34
+ "description",
35
+ models.TextField(blank=True, null=True, verbose_name="description"),
36
+ ),
37
+ (
38
+ "geojson",
39
+ models.FileField(
40
+ blank=True, null=True, upload_to=umap.models.upload_to
41
+ ),
42
+ ),
43
+ (
44
+ "display_on_load",
45
+ models.BooleanField(
46
+ default=False,
47
+ help_text="Display this layer on load.",
48
+ verbose_name="display on load",
49
+ ),
50
+ ),
51
+ ("rank", models.SmallIntegerField(default=0)),
29
52
  ],
30
53
  options={
31
- 'ordering': ('rank',),
54
+ "ordering": ("rank",),
32
55
  },
33
56
  ),
34
57
  migrations.CreateModel(
35
- name='Licence',
58
+ name="Licence",
36
59
  fields=[
37
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
38
- ('name', models.CharField(max_length=200, verbose_name='name')),
39
- ('details', models.URLField(help_text='Link to a page where the licence is detailed.', verbose_name='details')),
60
+ (
61
+ "id",
62
+ models.AutoField(
63
+ auto_created=True,
64
+ primary_key=True,
65
+ serialize=False,
66
+ verbose_name="ID",
67
+ ),
68
+ ),
69
+ ("name", models.CharField(max_length=200, verbose_name="name")),
70
+ (
71
+ "details",
72
+ models.URLField(
73
+ help_text="Link to a page where the licence is detailed.",
74
+ verbose_name="details",
75
+ ),
76
+ ),
40
77
  ],
41
78
  options={
42
- 'ordering': ('name',),
43
- 'abstract': False,
79
+ "ordering": ("name",),
80
+ "abstract": False,
44
81
  },
45
82
  ),
46
83
  migrations.CreateModel(
47
- name='Map',
84
+ name="Map",
48
85
  fields=[
49
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
50
- ('name', models.CharField(max_length=200, verbose_name='name')),
51
- ('slug', models.SlugField()),
52
- ('description', models.TextField(blank=True, null=True, verbose_name='description')),
53
- ('center', django.contrib.gis.db.models.fields.PointField(geography=True, srid=4326, verbose_name='center')),
54
- ('zoom', models.IntegerField(default=7, verbose_name='zoom')),
55
- ('locate', models.BooleanField(default=False, help_text='Locate user on load?', verbose_name='locate')),
56
- ('modified_at', models.DateTimeField(auto_now=True)),
57
- ('edit_status', models.SmallIntegerField(choices=[(1, 'Everyone can edit'), (2, 'Only editors can edit'), (3, 'Only owner can edit')], default=3, verbose_name='edit status')),
58
- ('share_status', models.SmallIntegerField(choices=[(1, 'everyone (public)'), (2, 'anyone with link'), (3, 'editors only')], default=1, verbose_name='share status')),
59
- ('settings', umap.fields.DictField(blank=True, null=True, verbose_name='settings')),
60
- ('editors', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, verbose_name='editors')),
61
- ('licence', models.ForeignKey(default=umap.models.get_default_licence, help_text='Choose the map licence.', on_delete=django.db.models.deletion.SET_DEFAULT, to='umap.Licence', verbose_name='licence')),
62
- ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='owned_maps', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
86
+ (
87
+ "id",
88
+ models.AutoField(
89
+ auto_created=True,
90
+ primary_key=True,
91
+ serialize=False,
92
+ verbose_name="ID",
93
+ ),
94
+ ),
95
+ ("name", models.CharField(max_length=200, verbose_name="name")),
96
+ ("slug", models.SlugField()),
97
+ (
98
+ "description",
99
+ models.TextField(blank=True, null=True, verbose_name="description"),
100
+ ),
101
+ (
102
+ "center",
103
+ django.contrib.gis.db.models.fields.PointField(
104
+ geography=True, srid=4326, verbose_name="center"
105
+ ),
106
+ ),
107
+ ("zoom", models.IntegerField(default=7, verbose_name="zoom")),
108
+ (
109
+ "locate",
110
+ models.BooleanField(
111
+ default=False,
112
+ help_text="Locate user on load?",
113
+ verbose_name="locate",
114
+ ),
115
+ ),
116
+ ("modified_at", models.DateTimeField(auto_now=True)),
117
+ (
118
+ "edit_status",
119
+ models.SmallIntegerField(
120
+ choices=[
121
+ (1, "Everyone can edit"),
122
+ (2, "Only editors can edit"),
123
+ (3, "Only owner can edit"),
124
+ ],
125
+ default=3,
126
+ verbose_name="edit status",
127
+ ),
128
+ ),
129
+ (
130
+ "share_status",
131
+ models.SmallIntegerField(
132
+ choices=[
133
+ (1, "everyone (public)"),
134
+ (2, "anyone with link"),
135
+ (3, "editors only"),
136
+ ],
137
+ default=1,
138
+ verbose_name="share status",
139
+ ),
140
+ ),
141
+ (
142
+ "settings",
143
+ umap.fields.DictField(
144
+ blank=True, null=True, verbose_name="settings"
145
+ ),
146
+ ),
147
+ (
148
+ "editors",
149
+ models.ManyToManyField(
150
+ blank=True, to=settings.AUTH_USER_MODEL, verbose_name="editors"
151
+ ),
152
+ ),
153
+ (
154
+ "licence",
155
+ models.ForeignKey(
156
+ default=umap.models.get_default_licence,
157
+ help_text="Choose the map licence.",
158
+ on_delete=django.db.models.deletion.SET_DEFAULT,
159
+ to="umap.Licence",
160
+ verbose_name="licence",
161
+ ),
162
+ ),
163
+ (
164
+ "owner",
165
+ models.ForeignKey(
166
+ blank=True,
167
+ null=True,
168
+ on_delete=django.db.models.deletion.PROTECT,
169
+ related_name="owned_maps",
170
+ to=settings.AUTH_USER_MODEL,
171
+ verbose_name="owner",
172
+ ),
173
+ ),
63
174
  ],
64
175
  options={
65
- 'ordering': ('name',),
66
- 'abstract': False,
176
+ "ordering": ("name",),
177
+ "abstract": False,
67
178
  },
68
179
  ),
69
180
  migrations.CreateModel(
70
- name='Pictogram',
181
+ name="Pictogram",
71
182
  fields=[
72
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
73
- ('name', models.CharField(max_length=200, verbose_name='name')),
74
- ('attribution', models.CharField(max_length=300)),
75
- ('pictogram', models.ImageField(upload_to='pictogram')),
183
+ (
184
+ "id",
185
+ models.AutoField(
186
+ auto_created=True,
187
+ primary_key=True,
188
+ serialize=False,
189
+ verbose_name="ID",
190
+ ),
191
+ ),
192
+ ("name", models.CharField(max_length=200, verbose_name="name")),
193
+ ("attribution", models.CharField(max_length=300)),
194
+ ("pictogram", models.ImageField(upload_to="pictogram")),
76
195
  ],
77
196
  options={
78
- 'ordering': ('name',),
79
- 'abstract': False,
197
+ "ordering": ("name",),
198
+ "abstract": False,
80
199
  },
81
200
  ),
82
201
  migrations.CreateModel(
83
- name='TileLayer',
202
+ name="TileLayer",
84
203
  fields=[
85
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
86
- ('name', models.CharField(max_length=200, verbose_name='name')),
87
- ('url_template', models.CharField(help_text='URL template using OSM tile format', max_length=200)),
88
- ('minZoom', models.IntegerField(default=0)),
89
- ('maxZoom', models.IntegerField(default=18)),
90
- ('attribution', models.CharField(max_length=300)),
91
- ('rank', models.SmallIntegerField(blank=True, help_text='Order of the tilelayers in the edit box', null=True)),
204
+ (
205
+ "id",
206
+ models.AutoField(
207
+ auto_created=True,
208
+ primary_key=True,
209
+ serialize=False,
210
+ verbose_name="ID",
211
+ ),
212
+ ),
213
+ ("name", models.CharField(max_length=200, verbose_name="name")),
214
+ (
215
+ "url_template",
216
+ models.CharField(
217
+ help_text="URL template using OSM tile format", max_length=200
218
+ ),
219
+ ),
220
+ ("minZoom", models.IntegerField(default=0)),
221
+ ("maxZoom", models.IntegerField(default=18)),
222
+ ("attribution", models.CharField(max_length=300)),
223
+ (
224
+ "rank",
225
+ models.SmallIntegerField(
226
+ blank=True,
227
+ help_text="Order of the tilelayers in the edit box",
228
+ null=True,
229
+ ),
230
+ ),
92
231
  ],
93
232
  options={
94
- 'ordering': ('rank', 'name'),
233
+ "ordering": ("rank", "name"),
95
234
  },
96
235
  ),
97
236
  migrations.AddField(
98
- model_name='map',
99
- name='tilelayer',
100
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='maps', to='umap.TileLayer', verbose_name='background'),
237
+ model_name="map",
238
+ name="tilelayer",
239
+ field=models.ForeignKey(
240
+ blank=True,
241
+ null=True,
242
+ on_delete=django.db.models.deletion.PROTECT,
243
+ related_name="maps",
244
+ to="umap.TileLayer",
245
+ verbose_name="background",
246
+ ),
101
247
  ),
102
248
  migrations.AddField(
103
- model_name='datalayer',
104
- name='map',
105
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='umap.Map'),
249
+ model_name="datalayer",
250
+ name="map",
251
+ field=models.ForeignKey(
252
+ on_delete=django.db.models.deletion.CASCADE, to="umap.Map"
253
+ ),
106
254
  ),
107
255
  ]
@@ -4,15 +4,14 @@ from django.db import migrations, models
4
4
 
5
5
 
6
6
  class Migration(migrations.Migration):
7
-
8
7
  dependencies = [
9
- ('umap', '0001_initial'),
8
+ ("umap", "0001_initial"),
10
9
  ]
11
10
 
12
11
  operations = [
13
12
  migrations.AddField(
14
- model_name='tilelayer',
15
- name='tms',
13
+ model_name="tilelayer",
14
+ name="tms",
16
15
  field=models.BooleanField(default=False),
17
16
  ),
18
17
  ]
@@ -5,22 +5,26 @@ from django.db import migrations
5
5
 
6
6
 
7
7
  def add_tilelayer(apps, *args):
8
- TileLayer = apps.get_model('umap', 'TileLayer')
8
+ TileLayer = apps.get_model("umap", "TileLayer")
9
9
  if TileLayer.objects.count():
10
10
  return
11
11
  TileLayer(
12
- name='Positron',
13
- url_template=('https://cartodb-basemaps-{s}.global.ssl.fastly.net/'
14
- 'light_all/{z}/{x}/{y}.png'),
15
- attribution=('&copy; [[http://www.openstreetmap.org/copyright|'
16
- 'OpenStreetMap]] contributors, &copy; '
17
- '[[https://carto.com/attributions|CARTO]]')).save()
12
+ name="Positron",
13
+ url_template=(
14
+ "https://cartodb-basemaps-{s}.global.ssl.fastly.net/"
15
+ "light_all/{z}/{x}/{y}.png"
16
+ ),
17
+ attribution=(
18
+ "&copy; [[http://www.openstreetmap.org/copyright|"
19
+ "OpenStreetMap]] contributors, &copy; "
20
+ "[[https://carto.com/attributions|CARTO]]"
21
+ ),
22
+ ).save()
18
23
 
19
24
 
20
25
  class Migration(migrations.Migration):
21
-
22
26
  dependencies = [
23
- ('umap', '0002_tilelayer_tms'),
27
+ ("umap", "0002_tilelayer_tms"),
24
28
  ]
25
29
 
26
30
  operations = [