Improve user experience in admin and UI (#45)

This commit is contained in:
2025-01-18 15:37:56 +01:00
committed by GitHub
parent c467fb24ca
commit ddcf06994d
17 changed files with 364 additions and 106 deletions

View File

@@ -2,7 +2,7 @@ import html
from django.conf import settings
from django.contrib import admin
from django.utils.html import strip_tags
from django.utils.html import format_html, strip_tags
from adminsortable2.admin import SortableAdminBase, SortableInlineAdminMixin
from ram.admin import publish, unpublish
@@ -93,12 +93,7 @@ class BookAdmin(SortableAdminBase, admin.ModelAdmin):
),
(
"Notes",
{
"classes": ("collapse",),
"fields": (
"notes",
)
},
{"classes": ("collapse",), "fields": ("notes",)},
),
(
"Audit",
@@ -150,23 +145,25 @@ class BookAdmin(SortableAdminBase, admin.ModelAdmin):
"{}:{}".format(property.property.name, property.value)
for property in obj.property.all()
)
data.append([
obj.title,
obj.authors_list.replace(",", settings.CSV_SEPARATOR_ALT),
obj.publisher.name,
obj.ISBN,
dict(settings.LANGUAGES)[obj.language],
obj.number_of_pages,
obj.publication_year,
html.unescape(strip_tags(obj.description)),
settings.CSV_SEPARATOR_ALT.join(
t.name for t in obj.tags.all()
),
obj.purchase_date,
obj.price,
html.unescape(strip_tags(obj.notes)),
properties,
])
data.append(
[
obj.title,
obj.authors_list.replace(",", settings.CSV_SEPARATOR_ALT),
obj.publisher.name,
obj.ISBN,
dict(settings.LANGUAGES)[obj.language],
obj.number_of_pages,
obj.publication_year,
html.unescape(strip_tags(obj.description)),
settings.CSV_SEPARATOR_ALT.join(
t.name for t in obj.tags.all()
),
obj.purchase_date,
obj.price,
html.unescape(strip_tags(obj.notes)),
properties,
]
)
return generate_csv(header, data, "bookshelf_books.csv")
@@ -185,9 +182,15 @@ class AuthorAdmin(admin.ModelAdmin):
@admin.register(Publisher)
class PublisherAdmin(admin.ModelAdmin):
list_display = ("name", "country")
list_display = ("name", "country_flag")
search_fields = ("name",)
@admin.display(description="Country")
def country_flag(self, obj):
return format_html(
'<img src="{}" /> {}'.format(obj.country.flag, obj.country.name)
)
@admin.register(Catalog)
class CatalogAdmin(SortableAdminBase, admin.ModelAdmin):
@@ -237,12 +240,7 @@ class CatalogAdmin(SortableAdminBase, admin.ModelAdmin):
),
(
"Notes",
{
"classes": ("collapse",),
"fields": (
"notes",
)
},
{"classes": ("collapse",), "fields": ("notes",)},
),
(
"Audit",
@@ -287,24 +285,26 @@ class CatalogAdmin(SortableAdminBase, admin.ModelAdmin):
"{}:{}".format(property.property.name, property.value)
for property in obj.property.all()
)
data.append([
obj.__str__(),
obj.manufacturer.name,
obj.years,
obj.get_scales(),
obj.ISBN,
dict(settings.LANGUAGES)[obj.language],
obj.number_of_pages,
obj.publication_year,
html.unescape(strip_tags(obj.description)),
settings.CSV_SEPARATOR_ALT.join(
t.name for t in obj.tags.all()
),
obj.purchase_date,
obj.price,
html.unescape(strip_tags(obj.notes)),
properties,
])
data.append(
[
obj.__str__(),
obj.manufacturer.name,
obj.years,
obj.get_scales(),
obj.ISBN,
dict(settings.LANGUAGES)[obj.language],
obj.number_of_pages,
obj.publication_year,
html.unescape(strip_tags(obj.description)),
settings.CSV_SEPARATOR_ALT.join(
t.name for t in obj.tags.all()
),
obj.purchase_date,
obj.price,
html.unescape(strip_tags(obj.notes)),
properties,
]
)
return generate_csv(header, data, "bookshelf_catalogs.csv")

View File

@@ -0,0 +1,34 @@
# Generated by Django 5.1.4 on 2025-01-18 11:20
import django.utils.timezone
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("bookshelf", "0020_alter_basebookdocument_unique_together_and_more"),
]
operations = [
migrations.AddField(
model_name="basebookdocument",
name="creation_time",
field=models.DateTimeField(
auto_now_add=True, default=django.utils.timezone.now
),
preserve_default=False,
),
migrations.AddField(
model_name="basebookdocument",
name="updated_time",
field=models.DateTimeField(auto_now=True),
),
migrations.AlterField(
model_name="basebookdocument",
name="private",
field=models.BooleanField(
default=False, help_text="Document will be visible only to logged users"
),
),
]