Skip to content

Commit 54ed954

Browse files
committed
# This is a combination of 2 commits.
# This is the 1st commit message: use patch files to create Django’s edit_inline templates # This is the commit message #2: fix yaml syntax fix yaml syntax fix yaml syntax fix yaml syntax use proper base class for inlines use proper base class for inlines
1 parent 067b8e6 commit 54ed954

File tree

8 files changed

+55
-106
lines changed

8 files changed

+55
-106
lines changed

.github/workflows/publish.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ jobs:
1515
environment:
1616
name: deploy
1717

18+
env:
19+
DJANGO_VERSIONS: ["4.0"]
20+
1821
strategy:
1922
matrix:
2023
python-version: ["3.9"]
@@ -39,6 +42,15 @@ jobs:
3942
run: |
4043
npm run build
4144
npm run uglify
45+
-name: Patch templates
46+
run: |
47+
mkdir --parents adminsortable2/templates/adminsortable2/edit_inline
48+
for django_version in $DJANGO_VERSIONS; do
49+
curl --output adminsortable2/templates/adminsortable2/edit_inline/stacked-django-${django_version}.html https://raw.githubusercontent.com/django/django/stable/${django_version}.x/django/contrib/admin/templates/admin/edit_inline/stacked.html
50+
curl --output adminsortable2/templates/adminsortable2/edit_inline/tabular-django-${django_version}.html https://raw.githubusercontent.com/django/django/stable/${django_version}.x/django/contrib/admin/templates/admin/edit_inline/tabular.html
51+
patch -p0 adminsortable2/templates/adminsortable2/edit_inline/stacked-django-${django_version}.html patches/stacked-django-${django_version}.patch
52+
patch -p0 adminsortable2/templates/adminsortable2/edit_inline/tabular-django-${django_version}.html patches/tabular-django-${django_version}.patch
53+
done
4254
- name: Build 🐍 Python 📦 Package
4355
run: python -m build --sdist --wheel --outdir dist/
4456
- name: Publish 🐍 Python 📦 Package to PyPI

.github/workflows/tests.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ jobs:
1010
build:
1111

1212
runs-on: ubuntu-latest
13+
1314
strategy:
1415
matrix:
1516
python-version: ["3.8", "3.9", "3.10"]
16-
Django-version: ["4.0"]
1717
node-version: ["16.x"]
18+
django-version: ["4.0"]
1819

1920
steps:
2021
- uses: actions/checkout@v3
@@ -31,10 +32,17 @@ jobs:
3132
npm ci --also=dev
3233
npx playwright install --with-deps
3334
python -m pip install --upgrade pip
34-
python -m pip install "Django==${{ matrix.Django-version }}.*"
35+
python -m pip install "Django==${{ matrix.django-version }}.*"
3536
python -m pip install -r testapp/requirements.txt
3637
python -m playwright install
3738
python -m playwright install-deps
39+
- name: Patch templates
40+
run: |
41+
mkdir --parents adminsortable2/templates/adminsortable2/edit_inline
42+
curl --output adminsortable2/templates/adminsortable2/edit_inline/stacked-django-${{ matrix.django-version }}.html https://raw.githubusercontent.com/django/django/stable/${{ matrix.django-version }}.x/django/contrib/admin/templates/admin/edit_inline/stacked.html
43+
curl --output adminsortable2/templates/adminsortable2/edit_inline/tabular-django-${{ matrix.django-version }}.html https://raw.githubusercontent.com/django/django/stable/${{ matrix.django-version }}.x/django/contrib/admin/templates/admin/edit_inline/tabular.html
44+
patch -p0 adminsortable2/templates/adminsortable2/edit_inline/stacked-django-${{ matrix.django-version }}.html patches/stacked-django-${{ matrix.django-version }}.patch
45+
patch -p0 adminsortable2/templates/adminsortable2/edit_inline/tabular-django-${{ matrix.django-version }}.html patches/tabular-django-${{ matrix.django-version }}.patch
3846
- name: Build Client
3947
run: |
4048
npm run build

adminsortable2/admin.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from itertools import chain
44
from types import MethodType
55

6+
from django import VERSION as DJANGO_VERSION
67
from django.conf import settings
78
from django.contrib import admin, messages
89
from django.contrib.contenttypes.forms import BaseGenericInlineFormSet
@@ -498,6 +499,14 @@ def get_fields(self, *args, **kwargs):
498499
return fields
499500

500501

502+
class SortableStackedInline(admin.StackedInline):
503+
template = 'adminsortable2/edit_inline/stacked-django-{0}.{1}.html'.format(*DJANGO_VERSION)
504+
505+
506+
class SortableTabularInline(admin.TabularInline):
507+
template = 'adminsortable2/edit_inline/tabular-django-{0}.{1}.html'.format(*DJANGO_VERSION)
508+
509+
501510
class CustomGenericInlineFormSet(CustomInlineFormSetMixin, BaseGenericInlineFormSet):
502511
def get_max_order(self):
503512
query_set = self.model.objects.filter(

adminsortable2/templates/adminsortable2/edit_inline/stacked.html

Lines changed: 0 additions & 30 deletions
This file was deleted.

adminsortable2/templates/adminsortable2/edit_inline/tabular.html

Lines changed: 0 additions & 67 deletions
This file was deleted.

patches/stacked-django-4.0.patch

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
--- django/contrib/admin/templates/admin/edit_inline/stacked.html 2022-06-07 18:13:55.000000000 +0200
2+
+++ adminsortable2/templates/adminsortable2/edit_inline/stacked.html 2022-06-10 09:55:47.000000000 +0200
3+
@@ -17,6 +17,7 @@
4+
{% else %}#{{ forloop.counter }}{% endif %}</span>
5+
{% if inline_admin_form.show_url %}<a href="{{ inline_admin_form.absolute_url }}">{% translate "View on site" %}</a>{% endif %}
6+
{% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission and inline_admin_form.original %}<span class="delete">{{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }}</span>{% endif %}
7+
+ {% if inline_admin_formset.has_change_permission and inline_admin_form.original %}<span class="sort"><i class="move-begin" role="button" aria-label="{% translate 'Move to first position' %}"></i><i class="move-end" role="button" aria-label="{% translate 'Move to last position' %}"></i></span>{% endif %}
8+
</h3>
9+
{% if inline_admin_form.form.non_field_errors %}{{ inline_admin_form.form.non_field_errors }}{% endif %}
10+
{% for fieldset in inline_admin_form %}

patches/tabular-django-4.0.patch

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
--- django/contrib/admin/templates/admin/edit_inline/tabular.html 2022-06-07 18:13:55.000000000 +0200
2+
+++ adminsortable2/templates/adminsortable2/edit_inline/tabular.html 2022-06-16 10:59:26.000000000 +0200
3+
@@ -36,6 +36,7 @@
4+
{% if inline_admin_form.model_admin.show_change_link and inline_admin_form.model_admin.has_registered_model %}<a href="{% url inline_admin_form.model_admin.opts|admin_urlname:'change' inline_admin_form.original.pk|admin_urlquote %}" class="{% if inline_admin_formset.has_change_permission %}inlinechangelink{% else %}inlineviewlink{% endif %}">{% if inline_admin_formset.has_change_permission %}{% translate "Change" %}{% else %}{% translate "View" %}{% endif %}</a>{% endif %}
5+
{% endif %}
6+
{% if inline_admin_form.show_url %}<a href="{{ inline_admin_form.absolute_url }}">{% translate "View on site" %}</a>{% endif %}
7+
+ <span class="sort"><i class="move-begin" role="button" aria-label="{% translate 'Move to first position' %}"></i><i class="move-end" role="button" aria-label="{% translate 'Move to last position' %}"></i></span>
8+
</p>{% endif %}
9+
{% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
10+
{% if inline_admin_form.fk_field %}{{ inline_admin_form.fk_field.field }}{% endif %}

testapp/admin.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.contrib import admin
22
from django.template.response import TemplateResponse
33

4-
from adminsortable2.admin import SortableAdminBase, SortableAdminMixin, SortableInlineAdminMixin
4+
from adminsortable2.admin import SortableAdminBase, SortableAdminMixin, SortableInlineAdminMixin, SortableStackedInline, SortableTabularInline
55

66
from testapp.models import Author, Chapter, Chapter1, Chapter2, Book, Book1, Book2
77

@@ -10,16 +10,14 @@ class AuthorAdmin(admin.ModelAdmin):
1010
list_display = ['name']
1111

1212

13-
class ChapterStackedInline(SortableInlineAdminMixin, admin.StackedInline):
13+
class ChapterStackedInline(SortableStackedInline):
1414
model = Chapter1 # model is ordered
1515
extra = 1
16-
template = 'adminsortable2/edit_inline/stacked.html'
1716

1817

19-
class ChapterStackedInlineReversed(SortableInlineAdminMixin, admin.StackedInline):
18+
class ChapterStackedInlineReversed(SortableStackedInline):
2019
model = Chapter2 # model is reverse ordered
2120
extra = 1
22-
template = 'adminsortable2/edit_inline/stacked.html'
2321

2422

2523
class ChapterStackedInlineUpOrdered(SortableInlineAdminMixin, admin.StackedInline):
@@ -34,10 +32,9 @@ class ChapterStackedInlineDownOrdered(SortableInlineAdminMixin, admin.StackedInl
3432
ordering = ['-my_order']
3533

3634

37-
class ChapterTabularInline(SortableInlineAdminMixin, admin.TabularInline):
35+
class ChapterTabularInline(SortableTabularInline):
3836
model = Chapter
3937
extra = 1
40-
template = 'adminsortable2/edit_inline/tabular.html'
4138
ordering = ['my_order']
4239

4340

0 commit comments

Comments
 (0)