django-admin-ordering 0.18.0__tar.gz → 0.18.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (17) hide show
  1. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/PKG-INFO +8 -11
  2. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/README.rst +7 -10
  3. django_admin_ordering-0.18.2/admin_ordering/__init__.py +1 -0
  4. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/admin_ordering/admin.py +10 -0
  5. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/admin_ordering/static/admin_ordering/admin_ordering.js +37 -38
  6. django_admin_ordering-0.18.0/admin_ordering/__init__.py +0 -1
  7. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/.gitignore +0 -0
  8. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/AUTHORS +0 -0
  9. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/LICENSE +0 -0
  10. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/admin_ordering/locale/de/LC_MESSAGES/django.mo +0 -0
  11. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/admin_ordering/locale/de/LC_MESSAGES/django.po +0 -0
  12. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/admin_ordering/models.py +0 -0
  13. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/admin_ordering/static/admin_ordering/admin_ordering-icon.svg +0 -0
  14. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/admin_ordering/static/admin_ordering/admin_ordering.css +0 -0
  15. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/admin_ordering/static/admin_ordering/jquery-ui.min.css +0 -0
  16. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/admin_ordering/static/admin_ordering/jquery-ui.min.js +0 -0
  17. {django_admin_ordering-0.18.0 → django_admin_ordering-0.18.2}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-admin-ordering
3
- Version: 0.18.0
3
+ Version: 0.18.2
4
4
  Summary: Orderable change lists and inlines done right^Wsimple
5
5
  Project-URL: Homepage, https://github.com/matthiask/django-admin-ordering/
6
6
  Author-email: Matthias Kestenholz <mk@feinheit.ch>
@@ -66,7 +66,7 @@ attribute is set to the correct value:
66
66
  class MyModel(OrderableModel):
67
67
  # ...
68
68
 
69
- class Meta(OrderableModel):
69
+ class Meta(OrderableModel.Meta):
70
70
  # ...
71
71
 
72
72
 
@@ -80,16 +80,16 @@ Orderable change lists
80
80
  @admin.register(MyModel)
81
81
  class MyModelAdmin(OrderableAdmin, admin.ModelAdmin):
82
82
  # The field used for ordering. Prepend a minus for reverse
83
- # ordering: "-order"
84
- ordering_field = "order"
83
+ # ordering: "-ordering"
84
+ ordering_field = "ordering" # The default.
85
85
 
86
86
  # You may optionally hide the ordering field in the changelist:
87
87
  # ordering_field_hide_input = False
88
88
 
89
89
  # The ordering field must be included both in list_display and
90
90
  # list_editable:
91
- list_display = ["name", "order"]
92
- list_editable = ["order"]
91
+ list_display = ["name", "ordering"]
92
+ list_editable = ["ordering"]
93
93
 
94
94
 
95
95
  Orderable inlines
@@ -102,8 +102,8 @@ Orderable inlines
102
102
  class MyModelTabularInline(OrderableAdmin, admin.TabularInline):
103
103
  model = MyModel
104
104
 
105
- # Same as above; "-order" is also allowed here:
106
- ordering_field = "order"
105
+ # Same as above; "-ordering" is also allowed here:
106
+ ordering_field = "ordering"
107
107
  # ordering_field_hide_input = False
108
108
 
109
109
  ``OrderableAdmin`` comes with a default of ``extra = 0`` (no extra
@@ -115,9 +115,6 @@ inlines just because you wanted to change the ordering.
115
115
  Limitations
116
116
  ===========
117
117
 
118
- - Starting with Django 1.9 newly created inlines are automatically
119
- assigned a good ordering value. Earlier versions do not support the
120
- required ``formset:added`` signal.
121
118
  - ``OrderableAdmin`` can be used both for inlines and parents, but this
122
119
  also means that you cannot register a model directly with
123
120
  ``OrderableAdmin``.
@@ -35,7 +35,7 @@ attribute is set to the correct value:
35
35
  class MyModel(OrderableModel):
36
36
  # ...
37
37
 
38
- class Meta(OrderableModel):
38
+ class Meta(OrderableModel.Meta):
39
39
  # ...
40
40
 
41
41
 
@@ -49,16 +49,16 @@ Orderable change lists
49
49
  @admin.register(MyModel)
50
50
  class MyModelAdmin(OrderableAdmin, admin.ModelAdmin):
51
51
  # The field used for ordering. Prepend a minus for reverse
52
- # ordering: "-order"
53
- ordering_field = "order"
52
+ # ordering: "-ordering"
53
+ ordering_field = "ordering" # The default.
54
54
 
55
55
  # You may optionally hide the ordering field in the changelist:
56
56
  # ordering_field_hide_input = False
57
57
 
58
58
  # The ordering field must be included both in list_display and
59
59
  # list_editable:
60
- list_display = ["name", "order"]
61
- list_editable = ["order"]
60
+ list_display = ["name", "ordering"]
61
+ list_editable = ["ordering"]
62
62
 
63
63
 
64
64
  Orderable inlines
@@ -71,8 +71,8 @@ Orderable inlines
71
71
  class MyModelTabularInline(OrderableAdmin, admin.TabularInline):
72
72
  model = MyModel
73
73
 
74
- # Same as above; "-order" is also allowed here:
75
- ordering_field = "order"
74
+ # Same as above; "-ordering" is also allowed here:
75
+ ordering_field = "ordering"
76
76
  # ordering_field_hide_input = False
77
77
 
78
78
  ``OrderableAdmin`` comes with a default of ``extra = 0`` (no extra
@@ -84,9 +84,6 @@ inlines just because you wanted to change the ordering.
84
84
  Limitations
85
85
  ===========
86
86
 
87
- - Starting with Django 1.9 newly created inlines are automatically
88
- assigned a good ordering value. Earlier versions do not support the
89
- required ``formset:added`` signal.
90
87
  - ``OrderableAdmin`` can be used both for inlines and parents, but this
91
88
  also means that you cannot register a model directly with
92
89
  ``OrderableAdmin``.
@@ -0,0 +1 @@
1
+ __version__ = "0.18.2"
@@ -75,4 +75,14 @@ class OrderableAdmin(BaseModelAdmin):
75
75
  id="admin_ordering.E001",
76
76
  )
77
77
  )
78
+ ordering = self.model._meta.ordering
79
+ if list(ordering)[:1] != [self.ordering_field]:
80
+ errors.append(
81
+ checks.Warning(
82
+ f"The ordering of {self.model._meta.label} is {ordering}, but {self.__class__.__name__} uses {self.ordering_field!r}. This is inconsistent and potentially broken.",
83
+ obj=self.__class__,
84
+ id="admin_ordering.W004",
85
+ hint="Check that ordering_field is set if you're using a descending ordering.",
86
+ )
87
+ )
78
88
  return errors
@@ -1,5 +1,5 @@
1
1
  /* global django */
2
- django.jQuery(function ($) {
2
+ django.jQuery(($) => {
3
3
  function updatePlaceholderHeight(ui) {
4
4
  // set placeholder height equal to item height
5
5
  ui.placeholder.height(ui.item.outerHeight())
@@ -18,28 +18,28 @@ django.jQuery(function ($) {
18
18
  $(".admin-ordering-context:not(.activated)")
19
19
  .addClass("activated")
20
20
  .each(function () {
21
- var $sortable,
22
- $sortableHandle,
23
- $sortableInputWrapper =
24
- '<span class="admin-ordering-field-input-wrapper"></span>',
25
- $sortableHandleSelector = ".admin-ordering-field-input-wrapper"
21
+ let $sortable
22
+ let $sortableHandle
23
+ const $sortableInputWrapper =
24
+ '<span class="admin-ordering-field-input-wrapper"></span>'
25
+ const $sortableHandleSelector = ".admin-ordering-field-input-wrapper"
26
26
 
27
- var data = JSON.parse(this.getAttribute("data-context"))
28
- if (data.field.indexOf("-") == 0) {
27
+ const data = JSON.parse(this.getAttribute("data-context"))
28
+ if (data.field.indexOf("-") === 0) {
29
29
  data.field = data.field.substring(1)
30
30
  data.fieldDesc = true
31
31
  } else {
32
32
  data.fieldDesc = false
33
33
  }
34
34
 
35
- var inputFieldSelector = 'input[name$="-' + data.field + '"]'
35
+ const inputFieldSelector = `input[name$="-${data.field}"]`
36
36
 
37
37
  function updateOrdering(nodes) {
38
- var incOrdering = 10
39
- var maxOrdering = nodes.length * incOrdering
38
+ const incOrdering = 10
39
+ const maxOrdering = nodes.length * incOrdering
40
40
  nodes.each(function (index) {
41
- var row = $(this)
42
- var rowOrdering = data.fieldDesc
41
+ const row = $(this)
42
+ const rowOrdering = data.fieldDesc
43
43
  ? maxOrdering - incOrdering * index
44
44
  : incOrdering * (index + 1)
45
45
  row.find(inputFieldSelector).val(rowOrdering)
@@ -48,60 +48,60 @@ django.jQuery(function ($) {
48
48
  }
49
49
 
50
50
  if (data.tabular) {
51
- $sortable = $("#" + data.prefix + "-group tbody")
52
- $sortableHandle = $sortable.find(".field-" + data.field)
51
+ $sortable = $(`#${data.prefix}-group tbody`)
52
+ $sortableHandle = $sortable.find(`.field-${data.field}`)
53
53
  $sortableHandle.addClass("admin-ordering-field")
54
54
  if (data.fieldHideInput) {
55
55
  $sortableHandle.addClass("admin-ordering-field-hide-input")
56
56
  }
57
57
  $sortableHandle
58
- .find(inputFieldSelector + ':not([type="hidden"])')
58
+ .find(`${inputFieldSelector}:not([type="hidden"])`)
59
59
  .wrap($sortableInputWrapper)
60
60
  $sortable.sortable({
61
61
  items: ">.has_original",
62
62
  handle: $sortableHandleSelector,
63
- start: function (_event, ui) {
63
+ start: (_event, ui) => {
64
64
  hideHorizontalOverflow()
65
65
  updatePlaceholderHeight(ui)
66
66
  // fix ui item height
67
67
  ui.item.css("height", ui.item.outerHeight())
68
68
  },
69
- update: function (_event, _ui) {
70
- updateOrdering($(".dynamic-" + data.prefix))
69
+ update: (_event, _ui) => {
70
+ updateOrdering($(`.dynamic-${data.prefix}`))
71
71
  },
72
- stop: function (_event, ui) {
72
+ stop: (_event, ui) => {
73
73
  autoHorizontalOverflow()
74
74
  // reset ui item height
75
75
  ui.item.css("height", "auto")
76
76
  },
77
77
  })
78
78
  } else if (data.stacked) {
79
- $sortable = $("#" + data.prefix + "-group")
80
- $sortableHandle = $sortable.find(".field-" + data.field)
79
+ $sortable = $(`#${data.prefix}-group`)
80
+ $sortableHandle = $sortable.find(`.field-${data.field}`)
81
81
  $sortableHandle.addClass("admin-ordering-field")
82
82
  if (data.fieldHideInput) {
83
83
  $sortableHandle.addClass("admin-ordering-field-hide-input")
84
84
  }
85
85
  $sortableHandle
86
- .find(inputFieldSelector + ':not([type="hidden"])')
86
+ .find(`${inputFieldSelector}:not([type="hidden"])`)
87
87
  .wrap($sortableInputWrapper)
88
88
  $sortable.sortable({
89
89
  items: ">.has_original,>>.has_original",
90
90
  handle: $sortableHandleSelector,
91
- start: function (_event, ui) {
91
+ start: (_event, ui) => {
92
92
  hideHorizontalOverflow()
93
93
  updatePlaceholderHeight(ui)
94
94
  },
95
- update: function (_event, _ui) {
96
- updateOrdering($(".dynamic-" + data.prefix))
95
+ update: (_event, _ui) => {
96
+ updateOrdering($(`.dynamic-${data.prefix}`))
97
97
  },
98
- stop: function (_event, _ui) {
98
+ stop: (_event, _ui) => {
99
99
  autoHorizontalOverflow()
100
100
  },
101
101
  })
102
102
  } else {
103
103
  $sortable = $("#result_list tbody")
104
- $sortableHandle = $sortable.find(".field-" + data.field)
104
+ $sortableHandle = $sortable.find(`.field-${data.field}`)
105
105
  $sortableHandle.addClass("admin-ordering-field")
106
106
  if (data.fieldHideInput) {
107
107
  $sortableHandle.addClass("admin-ordering-field-hide-input")
@@ -110,34 +110,33 @@ django.jQuery(function ($) {
110
110
  return
111
111
  }
112
112
  $sortableHandle
113
- .find(inputFieldSelector + ':not([type="hidden"])')
113
+ .find(`${inputFieldSelector}:not([type="hidden"])`)
114
114
  .wrap($sortableInputWrapper)
115
115
  $sortable.sortable({
116
116
  handle: $sortableHandleSelector,
117
- start: function (_event, ui) {
117
+ start: (_event, ui) => {
118
118
  hideHorizontalOverflow()
119
119
  updatePlaceholderHeight(ui)
120
120
  },
121
- update: function (_event, _ui) {
121
+ update: (_event, _ui) => {
122
122
  updateOrdering($sortable.find("tr"))
123
123
  },
124
- stop: function (_event, _ui) {
124
+ stop: (_event, _ui) => {
125
125
  autoHorizontalOverflow()
126
126
  },
127
127
  })
128
128
  }
129
129
 
130
130
  if (data.tabular || data.stacked) {
131
- // Yay, Django 1.9 or better!
132
131
  $(document).on("formset:added", function newForm(event, $row) {
133
- if (event.detail && event.detail.formsetName) {
132
+ if (event.detail?.formsetName) {
134
133
  // Django 4.1 or better!
135
- if ($(event.target).hasClass("dynamic-" + data.prefix)) {
136
- updateOrdering($(".dynamic-" + data.prefix))
134
+ if ($(event.target).hasClass(`dynamic-${data.prefix}`)) {
135
+ updateOrdering($(`.dynamic-${data.prefix}`))
137
136
  }
138
137
  } else {
139
- if ($row.hasClass("dynamic-" + data.prefix)) {
140
- updateOrdering($(".dynamic-" + data.prefix))
138
+ if ($row.hasClass(`dynamic-${data.prefix}`)) {
139
+ updateOrdering($(`.dynamic-${data.prefix}`))
141
140
  }
142
141
  }
143
142
  })
@@ -1 +0,0 @@
1
- __version__ = "0.18.0"