manager: always update cell form after a click on the save button (#9215)

This commit is contained in:
Frédéric Péters 2015-12-05 21:53:57 +01:00
parent 1c46784055
commit b06b2da707
5 changed files with 29 additions and 3 deletions

View File

@ -90,13 +90,16 @@ $(function() {
data: $form.serialize(),
type: 'POST',
beforeSend: function() { $button.attr('disabled', 'disabled'); },
success: function() {
success: function(data) {
$button.attr('disabled', null);
$.getJSON($form.data('label-url'),
$button.parents('form').find('div.cell-form').html(data);
if (data.indexOf('class="errorlist"') == -1) {
$.getJSON($form.data('label-url'),
function(data) {
$form.parents('div.cell').find('.additional-label i').text(data['label']);
}
);
);
}
}
});
return false;

View File

@ -0,0 +1 @@
{{form.as_p}}

View File

@ -3,7 +3,9 @@
<form action="{{ url }}" method="post" data-label-url="{% url 'combo-manager-page-get-additional-label' page_pk=page.id cell_reference=cell.get_reference %}">
{% csrf_token %}
{% if form %}
<div class="cell-form">
{{ form.as_p }}
</div>
{% else %}
<p>{% trans "There are no options for this cell." %}</p>
{% endif %}

View File

@ -185,6 +185,8 @@ page_add_cell = PageAddCellView.as_view()
class PageEditCellView(UpdateView):
template_name = 'combo/ajax_cell_form.html'
def get_object(self, queryset=None):
page_pk = self.kwargs.get('page_pk')
cell_reference = self.kwargs.get('cell_reference')
@ -202,6 +204,12 @@ class PageEditCellView(UpdateView):
def get_success_url(self):
return reverse('combo-manager-page-view', kwargs={'pk': self.kwargs.get('page_pk')})
def form_valid(self, form):
if self.request.is_ajax():
self.object = form.save()
return self.form_invalid(form)
return super(PageEditCellView, self).form_valid(form)
page_edit_cell = PageEditCellView.as_view()

View File

@ -101,11 +101,23 @@ def test_add_edit_cell(admin_user):
assert ('data-cell-reference="%s"' % cells[0].get_reference()) in resp.body
resp.forms[0]['c%s-text' % cells[0].get_reference()].value = 'Hello world'
resp = resp.forms[0].submit()
assert resp.status_int == 302
assert resp.location == 'http://localhost:80/manage/pages/1/'
resp = app.get('/manage/pages/%s/' % page.id)
assert resp.forms[0]['c%s-text' % cells[0].get_reference()].value == 'Hello world'
resp = app.get('/manage/pages/%s/' % page.id)
assert ('data-cell-reference="%s"' % cells[0].get_reference()) in resp.body
resp.forms[0]['c%s-text' % cells[0].get_reference()].value = 'World Hello'
resp = resp.forms[0].submit(xhr=True)
assert resp.status_int == 200
assert resp.body.startswith('<p><label')
resp = app.get('/manage/pages/%s/' % page.id)
assert resp.forms[0]['c%s-text' % cells[0].get_reference()].value == 'World Hello'
def test_logout(admin_user):
app = login(TestApp(application))
app.get('/logout/')