descriptions in catalogue
[redakcja.git] / src / catalogue / admin.py
index 213e9ca..48d5dc5 100644 (file)
@@ -42,10 +42,13 @@ class AuthorAdmin(WikidataAdminMixin, TabbedTranslationAdmin):
         "status",
         "gender",
         "nationality",
+        "place_of_birth",
+        "place_of_death",
+        ("genitive", admin.EmptyFieldListFilter)
     ]
     list_per_page = 10000000
     search_fields = ["first_name", "last_name", "wikidata"]
-    readonly_fields = ["wikidata_link"]
+    readonly_fields = ["wikidata_link", "description_preview"]
 
     fieldsets = [
         (None, {"fields": [("wikidata", "wikidata_link")]}),
@@ -55,11 +58,12 @@ class AuthorAdmin(WikidataAdminMixin, TabbedTranslationAdmin):
                 "fields": [
                     ("first_name", "last_name"),
                     "slug",
+                    "genitive",
                     "gender",
                     "nationality",
                     ("date_of_birth", "year_of_birth", "year_of_birth_inexact", "year_of_birth_range", "place_of_birth"),
                     ("date_of_death", "year_of_death", "year_of_death_inexact", "year_of_death_range", "place_of_death"),
-                    "description",
+                    ("description", "description_preview"),
                     "status",
                     "collections",
                     "priority",
@@ -67,6 +71,8 @@ class AuthorAdmin(WikidataAdminMixin, TabbedTranslationAdmin):
                     "notes",
                     "gazeta_link",
                     "culturepl_link",
+                    "plwiki",
+                    "photo", "photo_source", "photo_attribution",
                 ]
             },
         ),
@@ -78,6 +84,9 @@ class AuthorAdmin(WikidataAdminMixin, TabbedTranslationAdmin):
         NotableBookInline,
     ]
 
+    def description_preview(self, obj):
+        return obj.generate_description()
+
 
 admin.site.register(models.Author, AuthorAdmin)
 
@@ -161,6 +170,12 @@ class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin):
         "priority",
         "authors__gender", "authors__nationality",
         "translators__gender", "translators__nationality",
+
+        ("authors__place_of_birth", add_title(admin.RelatedFieldListFilter, ' autora')),
+        ("authors__place_of_death", add_title(admin.RelatedFieldListFilter, ' autora')),
+        ("translators__place_of_birth", add_title(admin.RelatedFieldListFilter, ' tłumacza')),
+        ("translators__place_of_death", add_title(admin.RelatedFieldListFilter, ' tłumacza')),
+
         "document_book__chunk__stage",
 
         LicenseFilter,
@@ -175,6 +190,8 @@ class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin):
         "estimated_costs",
         "documents_book_link",
         "scans_source_link",
+        "monthly_views_page",
+        "monthly_views_reader",
     ]
     actions = [export_as_csv_action(
         fields=[
@@ -182,8 +199,10 @@ class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin):
             "wikidata",
             "slug",
             "title",
-            "authors_str", # authors?
-            "translators_str", # translators?
+            "authors_first_names",
+            "authors_last_names",
+            "translators_first_names",
+            "translators_last_names",
             "language",
             "based_on",
             "scans_source",
@@ -194,7 +213,20 @@ class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin):
             "gazeta_link",
             "estimated_chars",
             "estimated_verses",
-            "estimate_source"
+            "estimate_source",
+
+            "monthly_views_page",
+            "monthly_views_reader",
+
+            # content stats
+            "chars",
+            "chars_with_fn",
+            "words",
+            "words_with_fn",
+            "verses",
+            "chars_out_verse",
+            "verses_with_fn",
+            "chars_out_verse_with_fn",
         ]
     )]
     fieldsets = [
@@ -209,6 +241,7 @@ class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin):
                     "translators",
                     "language",
                     "based_on",
+                    "original_year",
                     "pd_year",
                 ]
             },
@@ -235,6 +268,7 @@ class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin):
                     "notes",
                     ("estimated_chars", "estimated_verses", "estimate_source"),
                     "estimated_costs",
+                    ("monthly_views_page", "monthly_views_reader"),
                 ]
             },
         ),
@@ -306,7 +340,7 @@ class CollectionAdmin(admin.ModelAdmin):
     autocomplete_fields = []
     prepopulated_fields = {"slug": ("name",)}
     search_fields = ["name"]
-    fields = ['name', 'slug', 'category', 'notes', 'estimated_costs']
+    fields = ['name', 'slug', 'category', 'description', 'notes', 'estimated_costs']
     readonly_fields = ['estimated_costs']
     inlines = [AuthorInline, BookInline]
 
@@ -327,9 +361,39 @@ admin.site.register(models.Collection, CollectionAdmin)
 class CategoryAdmin(admin.ModelAdmin):
     search_fields = ["name"]
 
-admin.site.register(models.Epoch, CategoryAdmin)
-admin.site.register(models.Genre, CategoryAdmin)
-admin.site.register(models.Kind, CategoryAdmin)
+    def has_description(self, obj):
+        return bool(obj.description)
+    has_description.boolean = True
+    has_description.short_description = 'opis'
+
+
+@admin.register(models.Epoch)
+class EpochAdmin(CategoryAdmin):
+    list_display = [
+        'name',
+        'adjective_feminine_singular',
+        'adjective_nonmasculine_plural',
+        'has_description',
+    ]
+
+
+@admin.register(models.Genre)
+class GenreAdmin(CategoryAdmin):
+    list_display = [
+        'name',
+        'plural',
+        'is_epoch_specific',
+        'has_description',
+    ]
+
+
+@admin.register(models.Kind)
+class KindAdmin(CategoryAdmin):
+    list_display = [
+        'name',
+        'collective_noun',
+        'has_description',
+    ]