views: move ods export next to other visualisation actions (#30865)
This commit is contained in:
parent
8353aaddc7
commit
24943e3136
|
@ -72,12 +72,6 @@ select {
|
|||
justify-content: space-around;
|
||||
}
|
||||
|
||||
/* put ODS export export slightly on the right of the repesentation header */
|
||||
#ods {
|
||||
margin: 1ex;
|
||||
top: -2ex;
|
||||
}
|
||||
|
||||
/* Main content */
|
||||
|
||||
/* size main content to let some place on the right for the form */
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
{% block content %}
|
||||
<form class="cube-form" method="post" action=".">
|
||||
{% csrf_token %}
|
||||
{% if visualization %}
|
||||
<input type="submit" value="ODS" name="ods" id="ods"/>
|
||||
{% endif %}
|
||||
<h3>Représentation</h3>
|
||||
{% include "bijoe/field.html" with field=form.representation %}
|
||||
<h3>Répétition</h3>
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
{% block actions %}
|
||||
<a rel="popup" class="button" href="{% url "rename-visualization" pk=object.pk %}">{% trans "Rename" %}</a>
|
||||
<a rel="popup" class="button" href="{% url "delete-visualization" pk=object.pk %}">{% trans "Delete" %}</a>
|
||||
<a rel="popup" class="button" href="{% url "visualization-ods" pk=object.pk %}">{% trans "Export as ODS" %}</a>
|
||||
<a href="{{ iframe_url }}" class="button">{% trans "URL for IFRAME" %}</a>
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ urlpatterns = [
|
|||
url(r'(?P<pk>\d+)/$', views.visualization, name='visualization'),
|
||||
url(r'(?P<pk>\d+)/geojson/$', views.visualization_geojson, name='visualization-geojson'),
|
||||
url(r'(?P<pk>\d+)/iframe/$', views.visualization_iframe, name='visualization-iframe'),
|
||||
url(r'(?P<pk>\d+)/ods/$', views.visualization_ods, name='visualization-ods'),
|
||||
url(r'(?P<pk>\d+)/rename/$', views.rename_visualization, name='rename-visualization'),
|
||||
url(r'(?P<pk>\d+)/delete/$', views.delete_visualization, name='delete-visualization'),
|
||||
]
|
||||
|
|
|
@ -18,6 +18,7 @@ import hashlib
|
|||
import json
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.text import slugify
|
||||
from django.views.generic.edit import CreateView, DeleteView, UpdateView
|
||||
from django.views.generic.list import MultipleObjectMixin
|
||||
from django.views.generic import DetailView, ListView, View, TemplateView
|
||||
|
@ -81,18 +82,7 @@ class CubeMixin(object):
|
|||
return super(CubeMixin, self).dispatch(request, *args, **kwargs)
|
||||
|
||||
|
||||
class ODSMixin(object):
|
||||
def ods(self, visualization):
|
||||
if not self.visualization:
|
||||
raise Http404
|
||||
response = HttpResponse(content_type='application/vnd.oasis.opendocument.spreadsheet')
|
||||
response['Content-Disposition'] = 'attachment; filename=%s.ods' % self.cube.name
|
||||
workbook = visualization.ods()
|
||||
workbook.save(response)
|
||||
return response
|
||||
|
||||
|
||||
class CubeView(views.AuthorizationMixin, CubeDisplayMixin, ODSMixin, CubeMixin, TemplateView):
|
||||
class CubeView(views.AuthorizationMixin, CubeDisplayMixin, CubeMixin, TemplateView):
|
||||
template_name = 'bijoe/cube.html'
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
@ -124,8 +114,7 @@ class CreateVisualizationView(views.AuthorizationMixin, CubeMixin, CreateView):
|
|||
return super(CreateVisualizationView, self).form_valid(form)
|
||||
|
||||
|
||||
class VisualizationView(views.AuthorizationMixin, ODSMixin, CubeDisplayMixin,
|
||||
DetailView):
|
||||
class VisualizationView(views.AuthorizationMixin, CubeDisplayMixin, DetailView):
|
||||
model = models.Visualization
|
||||
template_name = 'bijoe/visualization.html'
|
||||
|
||||
|
@ -236,6 +225,19 @@ class CubeIframeView(CubeView):
|
|||
template_name = 'bijoe/cube_raw.html'
|
||||
|
||||
|
||||
class VisualizationODSView(DetailView):
|
||||
model = models.Visualization
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
instance = self.get_object()
|
||||
visualization = Visualization.from_json(instance.parameters, request=request)
|
||||
response = HttpResponse(content_type='application/vnd.oasis.opendocument.spreadsheet')
|
||||
response['Content-Disposition'] = 'attachment; filename=%s.ods' % slugify(instance.name)
|
||||
workbook = visualization.ods()
|
||||
workbook.save(response)
|
||||
return response
|
||||
|
||||
|
||||
class VisualizationGeoJSONView(generics.GenericAPIView):
|
||||
permission_classes = ()
|
||||
queryset = models.Visualization.objects.all()
|
||||
|
@ -272,6 +274,7 @@ rename_visualization = RenameVisualization.as_view()
|
|||
visualization = VisualizationView.as_view()
|
||||
visualization_iframe = xframe_options_exempt(VisualizationIframeView.as_view())
|
||||
visualization_geojson = VisualizationGeoJSONView.as_view()
|
||||
visualization_ods = VisualizationODSView.as_view()
|
||||
|
||||
cube_iframe.mellon_no_passive = True
|
||||
visualization_iframe.mellon_no_passive = True
|
||||
|
|
Loading…
Reference in New Issue