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, from django.views.generic import (TemplateView, ListView, CreateView,
UpdateView, DeleteView) UpdateView, DeleteView)
from .models import Map
from .models import MapLayer from .models import MapLayer
from .forms import MapNewLayerForm, MapLayerForm from .forms import MapNewLayerForm, MapLayerForm
@ -30,6 +31,11 @@ class MapLayerMixin(object):
class ManagerHomeView(MapLayerMixin, ListView): class ManagerHomeView(MapLayerMixin, ListView):
template_name = 'maps/manager_home.html' 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): class LayerAddView(MapLayerMixin, CreateView):
form_class = MapNewLayerForm form_class = MapNewLayerForm

View File

@ -26,4 +26,28 @@
{% endblocktrans %} {% endblocktrans %}
</div> </div>
{% endif %} {% 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 %} {% endblock %}

View File

@ -5,7 +5,9 @@ import mock
from django.contrib.auth.models import User from django.contrib.auth.models import User
from combo.apps.maps.models import Map
from combo.apps.maps.models import MapLayer from combo.apps.maps.models import MapLayer
from combo.data.models import Page
pytestmark = pytest.mark.django_db pytestmark = pytest.mark.django_db
@ -66,6 +68,19 @@ def test_delete_layer(app, admin_user):
assert resp.location.endswith('/manage/maps/') assert resp.location.endswith('/manage/maps/')
assert MapLayer.objects.count() == 0 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') @mock.patch('combo.apps.maps.models.requests.get')
def test_download_geojson(mock_request, app, admin_user): def test_download_geojson(mock_request, app, admin_user):
test_add_layer(app, admin_user) test_add_layer(app, admin_user)