0001-manager-always-update-cell-form-after-a-click-on-the.patch
combo/manager/static/js/combo.manager.js | ||
---|---|---|
90 | 90 |
data: $form.serialize(), |
91 | 91 |
type: 'POST', |
92 | 92 |
beforeSend: function() { $button.attr('disabled', 'disabled'); }, |
93 |
success: function() { |
|
93 |
success: function(data) {
|
|
94 | 94 |
$button.attr('disabled', null); |
95 |
$.getJSON($form.data('label-url'), |
|
95 |
$button.parents('form').find('div.cell-form').html(data); |
|
96 |
if (data.indexOf('class="errorlist"') == -1) { |
|
97 |
$.getJSON($form.data('label-url'), |
|
96 | 98 |
function(data) { |
97 | 99 |
$form.parents('div.cell').find('.additional-label i').text(data['label']); |
98 | 100 |
} |
99 |
); |
|
101 |
); |
|
102 |
} |
|
100 | 103 |
} |
101 | 104 |
}); |
102 | 105 |
return false; |
combo/manager/templates/combo/ajax_cell_form.html | ||
---|---|---|
1 |
{{form.as_p}} |
combo/manager/templates/combo/cell_form.html | ||
---|---|---|
3 | 3 |
<form action="{{ url }}" method="post" data-label-url="{% url 'combo-manager-page-get-additional-label' page_pk=page.id cell_reference=cell.get_reference %}"> |
4 | 4 |
{% csrf_token %} |
5 | 5 |
{% if form %} |
6 |
<div class="cell-form"> |
|
6 | 7 |
{{ form.as_p }} |
8 |
</div> |
|
7 | 9 |
{% else %} |
8 | 10 |
<p>{% trans "There are no options for this cell." %}</p> |
9 | 11 |
{% endif %} |
combo/manager/views.py | ||
---|---|---|
185 | 185 | |
186 | 186 | |
187 | 187 |
class PageEditCellView(UpdateView): |
188 |
template_name = 'combo/ajax_cell_form.html' |
|
189 | ||
188 | 190 |
def get_object(self, queryset=None): |
189 | 191 |
page_pk = self.kwargs.get('page_pk') |
190 | 192 |
cell_reference = self.kwargs.get('cell_reference') |
... | ... | |
202 | 204 |
def get_success_url(self): |
203 | 205 |
return reverse('combo-manager-page-view', kwargs={'pk': self.kwargs.get('page_pk')}) |
204 | 206 | |
207 |
def form_valid(self, form): |
|
208 |
if self.request.is_ajax(): |
|
209 |
self.object = form.save() |
|
210 |
return self.form_invalid(form) |
|
211 |
return super(PageEditCellView, self).form_valid(form) |
|
212 | ||
205 | 213 |
page_edit_cell = PageEditCellView.as_view() |
206 | 214 | |
207 | 215 |
tests/test_manager.py | ||
---|---|---|
101 | 101 |
assert ('data-cell-reference="%s"' % cells[0].get_reference()) in resp.body |
102 | 102 |
resp.forms[0]['c%s-text' % cells[0].get_reference()].value = 'Hello world' |
103 | 103 |
resp = resp.forms[0].submit() |
104 |
assert resp.status_int == 302 |
|
104 | 105 |
assert resp.location == 'http://localhost:80/manage/pages/1/' |
105 | 106 | |
106 | 107 |
resp = app.get('/manage/pages/%s/' % page.id) |
107 | 108 |
assert resp.forms[0]['c%s-text' % cells[0].get_reference()].value == 'Hello world' |
108 | 109 | |
110 |
resp = app.get('/manage/pages/%s/' % page.id) |
|
111 |
assert ('data-cell-reference="%s"' % cells[0].get_reference()) in resp.body |
|
112 |
resp.forms[0]['c%s-text' % cells[0].get_reference()].value = 'World Hello' |
|
113 |
resp = resp.forms[0].submit(xhr=True) |
|
114 |
assert resp.status_int == 200 |
|
115 |
assert resp.body.startswith('<p><label') |
|
116 | ||
117 |
resp = app.get('/manage/pages/%s/' % page.id) |
|
118 |
assert resp.forms[0]['c%s-text' % cells[0].get_reference()].value == 'World Hello' |
|
119 | ||
120 | ||
109 | 121 |
def test_logout(admin_user): |
110 | 122 |
app = login(TestApp(application)) |
111 | 123 |
app.get('/logout/') |
112 |
- |