reversion
authorRadek Czajka <rczajka@rczajka.pl>
Mon, 9 Oct 2023 12:56:21 +0000 (14:56 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Mon, 9 Oct 2023 12:56:21 +0000 (14:56 +0200)
requirements/requirements.txt
src/catalogue/admin.py
src/catalogue/models.py
src/redakcja/settings/__init__.py

index 346dad4..7dcf4fd 100644 (file)
@@ -29,5 +29,6 @@ djangorestframework==3.14.0
 django-filter==23.2
 django-modeltranslation==0.18.10
 django-admin-ordering==0.17
+django-reversion==5.0.6
 
 sentry-sdk==1.25.1
index 7eafe7b..36d464c 100644 (file)
@@ -13,6 +13,7 @@ from admin_numeric_filter.admin import RangeNumericFilter, NumericFilterModelAdm
 from admin_ordering.admin import OrderableAdmin
 from fnpdjango.actions import export_as_csv_action
 from modeltranslation.admin import TabbedTranslationAdmin
+from reversion.admin import VersionAdmin
 from . import models
 import documents.models
 import sources.models
@@ -99,7 +100,7 @@ class AuthorForm(forms.ModelForm):
             'woblink': WoblinkAuthorWidget,
         }
 
-class AuthorAdmin(WikidataAdminMixin, TabbedTranslationAdmin):
+class AuthorAdmin(WikidataAdminMixin, TabbedTranslationAdmin, VersionAdmin):
     form = AuthorForm
     list_display = [
         "first_name",
@@ -307,7 +308,7 @@ class SourcesInline(admin.TabularInline):
     extra = 1
 
 
-class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin):
+class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin, VersionAdmin):
     inlines = [SourcesInline]
     list_display = [
         "smart_title",
@@ -501,7 +502,7 @@ class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin):
 admin.site.register(models.Book, BookAdmin)
 
 
-admin.site.register(models.CollectionCategory)
+admin.site.register(models.CollectionCategory, VersionAdmin)
 
 
 class AuthorInline(admin.TabularInline):
@@ -514,7 +515,7 @@ class BookInline(admin.TabularInline):
     autocomplete_fields = ["book"]
 
 
-class CollectionAdmin(admin.ModelAdmin):
+class CollectionAdmin(VersionAdmin):
     list_display = ["name"]
     autocomplete_fields = []
     prepopulated_fields = {"slug": ("name",)}
@@ -537,7 +538,7 @@ admin.site.register(models.Collection, CollectionAdmin)
 
 
 
-class CategoryAdmin(admin.ModelAdmin):
+class CategoryAdmin(VersionAdmin):
     search_fields = ["name"]
 
     def has_description(self, obj):
@@ -581,7 +582,7 @@ class WorkRateInline(admin.TabularInline):
     autocomplete_fields = ['kinds', 'genres', 'epochs', 'collections']
 
 
-class WorkTypeAdmin(admin.ModelAdmin):
+class WorkTypeAdmin(VersionAdmin):
     inlines = [WorkRateInline]
 
 admin.site.register(models.WorkType, WorkTypeAdmin)
@@ -589,12 +590,12 @@ admin.site.register(models.WorkType, WorkTypeAdmin)
 
 
 @admin.register(models.Place)
-class PlaceAdmin(WikidataAdminMixin, TabbedTranslationAdmin):
+class PlaceAdmin(WikidataAdminMixin, TabbedTranslationAdmin, VersionAdmin):
     search_fields = ['name']
 
 
 @admin.register(models.Thema)
-class ThemaAdmin(admin.ModelAdmin):
+class ThemaAdmin(VersionAdmin):
     list_display = ['code', 'name', 'usable', 'hidden', 'woblink_category']
     list_filter = ['usable', 'usable_as_main', 'hidden']
     search_fields = ['code', 'name', 'description', 'public_description']
@@ -614,7 +615,7 @@ class AudienceForm(forms.ModelForm):
         }
 
 @admin.register(models.Audience)
-class AudienceAdmin(admin.ModelAdmin):
+class AudienceAdmin(VersionAdmin):
     form = AudienceForm
     list_display = ['code', 'name', 'thema', 'woblink']
     search_fields = ['code', 'name', 'description', 'thema', 'woblink']
index 8db23ab..e2d737a 100644 (file)
@@ -198,6 +198,9 @@ class NotableBook(OrderableModel):
     author = models.ForeignKey(Author, models.CASCADE)
     book = models.ForeignKey('Book', models.CASCADE)
 
+    def __str__(self):
+        return self.book.title
+
 
 class Category(WikidataModel):
     name = models.CharField(_("name"), max_length=255)
index f4f494c..b204d0a 100644 (file)
@@ -70,6 +70,7 @@ ROOT_URLCONF = 'redakcja.urls'
 
 INSTALLED_APPS = (
     'modeltranslation',
+    'reversion',
 
     'django.contrib.auth',
     'django.contrib.contenttypes',