drag drop ordering for faqs

This commit is contained in:
Tobias Brunner 2025-03-07 14:58:51 +01:00
parent b45c725c1a
commit d87929f6b4
No known key found for this signature in database
4 changed files with 24 additions and 6 deletions

View file

@ -1,5 +1,9 @@
from nested_admin import NestedStackedInline, NestedModelAdmin
from django.contrib import admin from django.contrib import admin
from django.utils.html import format_html from django.utils.html import format_html
from adminsortable2.admin import SortableAdminMixin
from .models import ( from .models import (
Category, Category,
CloudProvider, CloudProvider,
@ -14,10 +18,8 @@ from .models import (
WebsiteFaq, WebsiteFaq,
) )
import nested_admin
class PlanInline(NestedStackedInline):
class PlanInline(nested_admin.NestedStackedInline):
model = Plan model = Plan
extra = 1 extra = 1
fieldsets = ( fieldsets = (
@ -32,7 +34,7 @@ class ExternalLinkOfferingInline(admin.TabularInline):
ordering = ("order", "description") ordering = ("order", "description")
class OfferingInline(nested_admin.NestedStackedInline): class OfferingInline(NestedStackedInline):
model = ServiceOffering model = ServiceOffering
extra = 1 extra = 1
fieldsets = ( fieldsets = (
@ -68,7 +70,7 @@ class CategoryAdmin(admin.ModelAdmin):
@admin.register(CloudProvider) @admin.register(CloudProvider)
class CloudProviderAdmin(nested_admin.NestedModelAdmin): class CloudProviderAdmin(NestedModelAdmin):
list_display = ("name", "slug", "logo_preview") list_display = ("name", "slug", "logo_preview")
search_fields = ("name", "description") search_fields = ("name", "description")
prepopulated_fields = {"slug": ("name",)} prepopulated_fields = {"slug": ("name",)}
@ -152,7 +154,7 @@ class LeadAdmin(admin.ModelAdmin):
@admin.register(WebsiteFaq) @admin.register(WebsiteFaq)
class WebsiteFaqAdmin(admin.ModelAdmin): class WebsiteFaqAdmin(SortableAdminMixin, admin.ModelAdmin):
list_display = ("question", "order") list_display = ("question", "order")
search_fields = ("question", "answer") search_fields = ("question", "answer")
ordering = ("order",) ordering = ("order",)

View file

@ -71,6 +71,7 @@ INSTALLED_APPS = [
"rest_framework", "rest_framework",
"schema_viewer", "schema_viewer",
"nested_admin", "nested_admin",
"adminsortable2",
# local # local
"hub.services", "hub.services",
"hub.broker", "hub.broker",

View file

@ -6,6 +6,7 @@ readme = "README.md"
requires-python = ">=3.13" requires-python = ">=3.13"
dependencies = [ dependencies = [
"django>=5.1.5", "django>=5.1.5",
"django-admin-sortable2>=2.2.4",
"django-jazzmin>=3.0.1", "django-jazzmin>=3.0.1",
"django-nested-admin>=4.1.1", "django-nested-admin>=4.1.1",
"django-prose-editor[sanitize]>=0.10.3", "django-prose-editor[sanitize]>=0.10.3",

14
uv.lock generated
View file

@ -47,6 +47,18 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/11/e6/e92c8c788b83d109f34d933c5e817095d85722719cb4483472abc135f44e/Django-5.1.5-py3-none-any.whl", hash = "sha256:c46eb936111fffe6ec4bc9930035524a8be98ec2f74d8a0ff351226a3e52f459", size = 8276957 }, { url = "https://files.pythonhosted.org/packages/11/e6/e92c8c788b83d109f34d933c5e817095d85722719cb4483472abc135f44e/Django-5.1.5-py3-none-any.whl", hash = "sha256:c46eb936111fffe6ec4bc9930035524a8be98ec2f74d8a0ff351226a3e52f459", size = 8276957 },
] ]
[[package]]
name = "django-admin-sortable2"
version = "2.2.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "django" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ee/a1/0651ad69906f9ec9e73897353e933611550c6d31bfa9f721319c0ed99108/django_admin_sortable2-2.2.4.tar.gz", hash = "sha256:155e6114c7a931bceed9513af014f782ff1e643d99e81ddfef934f1daecd669d", size = 68207 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/66/c3/e804b1f04546c1060e566f35177c346590820a95bfb981d1f6360b419437/django_admin_sortable2-2.2.4-py3-none-any.whl", hash = "sha256:406c5b6d6e84ad982cc6e53c3f34b5db5f0a3f34891126af90c9fb2c372f53d5", size = 90816 },
]
[[package]] [[package]]
name = "django-browser-reload" name = "django-browser-reload"
version = "1.17.0" version = "1.17.0"
@ -279,6 +291,7 @@ version = "0.1.0"
source = { virtual = "." } source = { virtual = "." }
dependencies = [ dependencies = [
{ name = "django" }, { name = "django" },
{ name = "django-admin-sortable2" },
{ name = "django-jazzmin" }, { name = "django-jazzmin" },
{ name = "django-nested-admin" }, { name = "django-nested-admin" },
{ name = "django-prose-editor", extra = ["sanitize"] }, { name = "django-prose-editor", extra = ["sanitize"] },
@ -297,6 +310,7 @@ dev = [
[package.metadata] [package.metadata]
requires-dist = [ requires-dist = [
{ name = "django", specifier = ">=5.1.5" }, { name = "django", specifier = ">=5.1.5" },
{ name = "django-admin-sortable2", specifier = ">=2.2.4" },
{ name = "django-browser-reload", marker = "extra == 'dev'", specifier = "~=1.13" }, { name = "django-browser-reload", marker = "extra == 'dev'", specifier = "~=1.13" },
{ name = "django-jazzmin", specifier = ">=3.0.1" }, { name = "django-jazzmin", specifier = ">=3.0.1" },
{ name = "django-nested-admin", specifier = ">=4.1.1" }, { name = "django-nested-admin", specifier = ">=4.1.1" },