maps: add link to existing maps on manager map page (#16908)

This commit is contained in:
Lauréline Guérin 2019-10-21 15:31:04 +02:00
parent 992f6fc71a
commit 63a4bf975f
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 45 additions and 0 deletions

View File

@ -18,6 +18,7 @@ from django.core.urlresolvers import reverse_lazy
from django.views.generic import (TemplateView, ListView, CreateView,
UpdateView, DeleteView)
from .models import Map
from .models import MapLayer
from .forms import MapNewLayerForm, MapLayerForm
@ -30,6 +31,11 @@ class MapLayerMixin(object):
class ManagerHomeView(MapLayerMixin, ListView):
template_name = 'maps/manager_home.html'
def get_context_data(self, **kwargs):
context = super(ManagerHomeView, self).get_context_data(**kwargs)
context['map_list'] = Map.objects.all()
return context
class LayerAddView(MapLayerMixin, CreateView):
form_class = MapNewLayerForm

View File

@ -26,4 +26,28 @@
{% endblocktrans %}
</div>
{% endif %}
<h2>{% trans 'Maps on site' %}</h2>
{% if map_list %}
<ul class="objects-list single-links maps">
{% for map in map_list %}
<li>
<a href="{% url 'combo-manager-page-view' pk=map.page_id %}#cell-{{ map.get_reference }}">
{% if map.title %}
{% blocktrans with map_title=map.title page_title=map.page.title %}Map "{{ map_title }}" on page "{{ page_title }}"{% endblocktrans %}
{% else %}
{% blocktrans with page_title=map.page.title %}Unnamed map on page "{{ page_title }}"{% endblocktrans %}
{% endif %}
</a>
</li>
{% endfor %}
</ul>
{% else %}
<div class="big-msg-info">
{% blocktrans %}
This site doesn't have any map yet.
{% endblocktrans %}
</div>
{% endif %}
{% endblock %}

View File

@ -5,7 +5,9 @@ import mock
from django.contrib.auth.models import User
from combo.apps.maps.models import Map
from combo.apps.maps.models import MapLayer
from combo.data.models import Page
pytestmark = pytest.mark.django_db
@ -66,6 +68,19 @@ def test_delete_layer(app, admin_user):
assert resp.location.endswith('/manage/maps/')
assert MapLayer.objects.count() == 0
def test_list_layers(app, admin_user):
page = Page.objects.create(title='One', slug='one', template_name='standard')
map1 = Map.objects.create(page=page, placeholder='map 1', order=0)
map2 = Map.objects.create(page=page, placeholder='map 2', order=1)
test_add_layer(app, admin_user)
app = login(app)
resp = app.get('/manage/maps/', status=200)
assert '/manage/pages/{}/#cell-{}'.format(page.pk, map1.get_reference()) in resp.text
assert '/manage/pages/{}/#cell-{}'.format(page.pk, map2.get_reference()) in resp.text
@mock.patch('combo.apps.maps.models.requests.get')
def test_download_geojson(mock_request, app, admin_user):
test_add_layer(app, admin_user)