Projet

Général

Profil

0004-maps-default-tiles-layer-22639.patch

Lauréline Guérin, 11 février 2020 15:16

Télécharger (4,95 ko)

Voir les différences:

Subject: [PATCH 4/5] maps: default tiles layer (#22639)

 combo/apps/maps/models.py | 13 +++++++++++--
 tests/test_maps_cells.py  | 35 +++++++++++++++++++++++++++++++----
 2 files changed, 42 insertions(+), 6 deletions(-)
combo/apps/maps/models.py
153 153
    def natural_key(self):
154 154
        return (self.slug, )
155 155

  
156
    @classmethod
157
    def get_default_tiles_layer(cls):
158
        return cls.objects.filter(kind='tiles', tiles_default=True).first()
159

  
156 160
    @classmethod
157 161
    def export_all_for_json(cls):
158 162
        return [x.get_as_serialized_object() for x in MapLayer.objects.all()]
......
340 344
        ctx['min_zoom'] = self.min_zoom
341 345
        ctx['max_zoom'] = self.max_zoom
342 346
        ctx['geojson_url'] = reverse_lazy('mapcell-geojson', kwargs={'cell_id': self.pk})
343
        ctx['tile_urltemplate'] = settings.COMBO_MAP_TILE_URLTEMPLATE
344
        ctx['map_attribution'] = settings.COMBO_MAP_ATTRIBUTION
347
        default_tiles_layer = MapLayer.get_default_tiles_layer()
348
        if default_tiles_layer is not None:
349
            ctx['tile_urltemplate'] = default_tiles_layer.tiles_template_url
350
            ctx['map_attribution'] = default_tiles_layer.tiles_attribution
351
        else:
352
            ctx['tile_urltemplate'] = settings.COMBO_MAP_TILE_URLTEMPLATE
353
            ctx['map_attribution'] = settings.COMBO_MAP_ATTRIBUTION
345 354
        ctx['max_bounds'] = settings.COMBO_MAP_MAX_BOUNDS
346 355
        ctx['group_markers'] = self.group_markers
347 356
        ctx['marker_behaviour_onclick'] = self.marker_behaviour_onclick
tests/test_maps_cells.py
3 3
import mock
4 4
import pytest
5 5

  
6
from django.conf import settings
6 7
from django.contrib.auth.models import User
7
from django.test.client import RequestFactory
8
from django.core.urlresolvers import reverse
9 8
from django.contrib.auth.models import Group
9
from django.core.urlresolvers import reverse
10
from django.test.client import RequestFactory
11
from django.utils.html import escape
10 12

  
11 13
from combo.data.models import Page
12 14
from combo.apps.maps.models import MapLayer, Map, MapLayerOptions
......
88 90
}'''
89 91

  
90 92

  
91

  
92 93
@pytest.fixture
93 94
def user():
94 95
    try:
......
97 98
        user = User.objects.create_user('admin', email='admin@localhost', password='admin')
98 99
    return user
99 100

  
101

  
100 102
@pytest.fixture
101 103
def layer():
102 104
    try:
......
111 113
        layer.save()
112 114
    return layer
113 115

  
116

  
117
@pytest.fixture
118
def tiles_layer():
119
    return MapLayer.objects.create(
120
        label='Test2',
121
        kind='tiles',
122
        tiles_template_url='http://somedomain.com/blabla/{z}/{x}/{y}{r}.png',
123
        tiles_attribution='Foo bar',
124
        tiles_default=True,
125
    )
126

  
127

  
114 128
def test_cell_disabled():
115 129
    MapLayer.objects.all().delete()
116 130
    assert Map.is_enabled() is False
......
118 132
def test_cell_enabled(layer):
119 133
    assert Map.is_enabled() is True
120 134

  
121
def test_cell_rendering(app, layer):
135
def test_cell_rendering(app, layer, tiles_layer):
122 136
    page = Page(title='xxx', slug='test_map_cell', template_name='standard')
123 137
    page.save()
124 138
    cell = Map(page=page, placeholder='content', order=0, title='Map with points')
......
133 147
    assert 'data-init-lng="2.3233688436448574"' in rendered
134 148
    assert 'data-geojson-url="/ajax/mapcell/geojson/1/"' in rendered
135 149
    assert 'data-group-markers="1"' not in rendered
150
    assert 'data-tile-urltemplate="%s"' % tiles_layer.tiles_template_url in rendered
151
    assert 'data-map-attribution="%s"' % tiles_layer.tiles_attribution in rendered
136 152
    resp = app.get('/test_map_cell/')
137 153
    assert 'xstatic/leaflet.js' in resp.text
138 154
    assert 'js/combo.map.js' in resp.text
......
144 160
    rendered = cell.render(context)
145 161
    assert 'data-group-markers="1"' in rendered
146 162

  
163
    tiles_layer.tiles_default = False
164
    tiles_layer.save()
165
    rendered = cell.render(context)
166
    assert 'data-tile-urltemplate="%s"' % settings.COMBO_MAP_TILE_URLTEMPLATE in rendered
167
    assert 'data-map-attribution="%s"' % escape(settings.COMBO_MAP_ATTRIBUTION) in rendered
168

  
169
    tiles_layer.delete()
170
    rendered = cell.render(context)
171
    assert 'data-tile-urltemplate="%s"' % settings.COMBO_MAP_TILE_URLTEMPLATE in rendered
172
    assert 'data-map-attribution="%s"' % escape(settings.COMBO_MAP_ATTRIBUTION) in rendered
173

  
147 174

  
148 175
def test_get_geojson_on_non_public_page(app, layer):
149 176
    page = Page(title='xxx', slug='new', template_name='standard',
150
-