Projet

Général

Profil

0001-visualization-add-a-duplicate-button-39637.patch

Benjamin Dauvergne, 13 février 2020 12:30

Télécharger (4,16 ko)

Voir les différences:

Subject: [PATCH] visualization: add a duplicate button (#39637)

 bijoe/templates/bijoe/visualization.html |  1 +
 bijoe/visualization/urls.py              |  1 +
 bijoe/visualization/views.py             | 12 ++++++++++++
 tests/test_views.py                      | 11 +++++++++++
 4 files changed, 25 insertions(+)
bijoe/templates/bijoe/visualization.html
15 15
{% block actions %}
16 16
  <a rel="popup" class="button" href="{% url "rename-visualization" pk=object.pk %}">{% trans "Rename" %}</a>
17 17
  <a rel="popup" class="button" href="{% url "delete-visualization" pk=object.pk %}">{% trans "Delete" %}</a>
18
  <a rel="popup" href="{% url "save-as-visualization" pk=object.pk %}" title="{{ visualization.title }}" class="button">{% trans "Duplicate" %}</a>
18 19
  <a class="button" href="{% url "visualization-ods" pk=object.pk %}">{% trans "Export as ODS" %}</a>
19 20
  <a download class="button" href="{% url "export-visualization" pk=object.pk %}">{% trans "Export as JSON" %}</a>
20 21
  <a href="{{ iframe_url }}" class="button">{% trans "URL for IFRAME" %}</a>
bijoe/visualization/urls.py
41 41
    url(r'(?P<pk>\d+)/rename/$', views.rename_visualization, name='rename-visualization'),
42 42
    url(r'(?P<pk>\d+)/delete/$', views.delete_visualization, name='delete-visualization'),
43 43
    url(r'(?P<pk>\d+)/export$', views.export_visualization, name='export-visualization'),
44
    url(r'(?P<pk>\d+)/save-as/$', views.save_as_visualization, name='save-as-visualization'),
44 45
]
bijoe/visualization/views.py
121 121
        return super(CreateVisualizationView, self).form_valid(form)
122 122

  
123 123

  
124
class SaveAsVisualizationView(views.AuthorizationMixin, DetailView, CreateView):
125
    model = models.Visualization
126
    form_class = forms.VisualizationForm
127
    template_name = 'bijoe/create_visualization.html'
128
    success_url = '/visualization/{id}/'
129

  
130
    def form_valid(self, form):
131
        form.instance.parameters = self.get_object().parameters
132
        return super(SaveAsVisualizationView, self).form_valid(form)
133

  
134

  
124 135
class VisualizationView(views.AuthorizationMixin, CubeDisplayMixin, DetailView):
125 136
    model = models.Visualization
126 137
    template_name = 'bijoe/visualization.html'
......
409 420
delete_visualization = DeleteVisualizationView.as_view()
410 421
rename_visualization = RenameVisualization.as_view()
411 422
export_visualization = ExportVisualizationView.as_view()
423
save_as_visualization = SaveAsVisualizationView.as_view()
412 424
visualization = VisualizationView.as_view()
413 425
visualization_iframe = xframe_options_exempt(VisualizationIframeView.as_view())
414 426
visualization_geojson = VisualizationGeoJSONView.as_view()
tests/test_views.py
186 186
    resp = resp.form.submit().follow()
187 187
    assert '3 visualizations have been created. No visualization updated.' in resp.text
188 188
    assert Visualization.objects.count() == 3
189

  
190

  
191
def test_save_as(schema1, app, admin, visualization):
192
    login(app, admin)
193
    resp = app.get('/visualization/%s/' % visualization.id)
194
    resp = resp.click('Duplicate')
195
    resp.form['name'] = 'zob'
196
    resp = resp.form.submit().follow()
197
    assert Visualization.objects.count() == 2
198
    new_visualization = Visualization.objects.get(name='zob')
199
    assert new_visualization.parameters == visualization.parameters
189
-