Fix Missing CSRF Token
- Set default CSRF_HEADER_NAME to previous value instead of Django default - Added csrfmiddlewaretoken value to Ajax POST data from sorting views. - Moved csrf token template tag inside object representation formmaster
parent
c15f307e5a
commit
ff4dc3184f
|
|
@ -230,7 +230,7 @@ class SortableAdmin(SortableAdminBase, ModelAdmin):
|
||||||
'sortable_by_class_display_name': sortable_by_class_display_name,
|
'sortable_by_class_display_name': sortable_by_class_display_name,
|
||||||
'jquery_lib_path': jquery_lib_path,
|
'jquery_lib_path': jquery_lib_path,
|
||||||
'csrf_cookie_name': getattr(settings, 'CSRF_COOKIE_NAME', 'csrftoken'),
|
'csrf_cookie_name': getattr(settings, 'CSRF_COOKIE_NAME', 'csrftoken'),
|
||||||
'csrf_header_name': getattr(settings, 'CSRF_HEADER_NAME', 'HTTP_X_CSRFTOKEN'),
|
'csrf_header_name': getattr(settings, 'CSRF_HEADER_NAME', 'X-CSRFToken'),
|
||||||
'after_sorting_js_callback_name': self.after_sorting_js_callback_name
|
'after_sorting_js_callback_name': self.after_sorting_js_callback_name
|
||||||
})
|
})
|
||||||
return render(request, self.sortable_change_list_template, context)
|
return render(request, self.sortable_change_list_template, context)
|
||||||
|
|
@ -255,7 +255,7 @@ class SortableAdmin(SortableAdminBase, ModelAdmin):
|
||||||
'has_sortable_tabular_inlines': self.has_sortable_tabular_inlines,
|
'has_sortable_tabular_inlines': self.has_sortable_tabular_inlines,
|
||||||
'has_sortable_stacked_inlines': self.has_sortable_stacked_inlines,
|
'has_sortable_stacked_inlines': self.has_sortable_stacked_inlines,
|
||||||
'csrf_cookie_name': getattr(settings, 'CSRF_COOKIE_NAME', 'csrftoken'),
|
'csrf_cookie_name': getattr(settings, 'CSRF_COOKIE_NAME', 'csrftoken'),
|
||||||
'csrf_header_name': getattr(settings, 'CSRF_HEADER_NAME', 'HTTP_X_CSRFTOKEN'),
|
'csrf_header_name': getattr(settings, 'CSRF_HEADER_NAME', 'X-CSRFToken'),
|
||||||
'after_sorting_js_callback_name': self.after_sorting_js_callback_name
|
'after_sorting_js_callback_name': self.after_sorting_js_callback_name
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: ui.item.find('a.admin_sorting_url').attr('href'),
|
url: ui.item.find('a.admin_sorting_url').attr('href'),
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: { indexes: indexes.join(',') },
|
data: { indexes: indexes.join(','), csrfmiddlewaretoken: window.csrftoken },
|
||||||
success: function() {
|
success: function() {
|
||||||
// set icons based on position
|
// set icons based on position
|
||||||
lineItems.each(function(index, element) {
|
lineItems.each(function(index, element) {
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
{% include "adminsortable/shared/objects.html" %}
|
{% include "adminsortable/shared/objects.html" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% csrf_token %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: ui.item.parent().find(':hidden[name="admin_sorting_url"]').val(),
|
url: ui.item.parent().find(':hidden[name="admin_sorting_url"]').val(),
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: { indexes : indexes.join(',') },
|
data: { indexes : indexes.join(','), csrfmiddlewaretoken: window.csrftoken },
|
||||||
success: function() {
|
success: function() {
|
||||||
var fieldsets = ui.item.find('fieldset'),
|
var fieldsets = ui.item.find('fieldset'),
|
||||||
highlightedSelector = fieldsets.filter('.collapsed').length === fieldsets.length ? 'h3' : '.form-row',
|
highlightedSelector = fieldsets.filter('.collapsed').length === fieldsets.length ? 'h3' : '.form-row',
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: ui.item.parent().find(':hidden[name="admin_sorting_url"]').val(),
|
url: ui.item.parent().find(':hidden[name="admin_sorting_url"]').val(),
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: { indexes : indexes.join(',') },
|
data: { indexes : indexes.join(','), csrfmiddlewaretoken: window.csrftoken },
|
||||||
success: function() {
|
success: function() {
|
||||||
// set icons based on position
|
// set icons based on position
|
||||||
var icons = ui.item.parent().find('.fa');
|
var icons = ui.item.parent().find('.fa');
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,5 @@
|
||||||
<form>
|
<form>
|
||||||
<input name="pk" type="hidden" value="{{ object.pk|unlocalize }}" />
|
<input name="pk" type="hidden" value="{{ object.pk|unlocalize }}" />
|
||||||
<a href="{% url opts|admin_urlname:'do_sorting' object.model_type_id|unlocalize %}" class="admin_sorting_url"><i class="fa fa-{% if forloop.first %}sort-desc{% elif forloop.last %}sort-asc{% else %}sort{% endif %}"></i> {{ object }}</a>
|
<a href="{% url opts|admin_urlname:'do_sorting' object.model_type_id|unlocalize %}" class="admin_sorting_url"><i class="fa fa-{% if forloop.first %}sort-desc{% elif forloop.last %}sort-asc{% else %}sort{% endif %}"></i> {{ object }}</a>
|
||||||
|
{% csrf_token %}
|
||||||
</form>
|
</form>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue