Find unused tags.
authorRadek Czajka <rczajka@rczajka.pl>
Tue, 27 Aug 2024 13:56:07 +0000 (15:56 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Tue, 27 Aug 2024 13:56:07 +0000 (15:56 +0200)
src/catalogue/templates/catalogue/book_list.html
src/catalogue/templates/catalogue/themed_book_list.html
src/reporting/templates/reporting/main.html
src/reporting/views.py

index e8debd9..c57bdd3 100644 (file)
@@ -17,6 +17,7 @@
 {% block main %}
   <div class="l-section">
     <div class="l-author__header">
+      <span data-edit="catalogue/tag/{{ main_tag.id }}"></span>
       {% if main_tag.photo %}
         {% thumbnail main_tag.photo '40x40' crop='top' as th %}
         <figure>
index 665233d..dc54f76 100644 (file)
@@ -17,6 +17,7 @@
 
     <div class="l-section">
       <div class="l-author__header">
+        <span data-edit="catalogue/tag/{{ main_tag.id }}"></span>
         <h1><span>{% trans "Motyw" %}:</span> {{ main_tag.name }}</h1>
       </div>
     </div>
index e67ef78..903db3e 100644 (file)
   <h1>Statystyka</h1>
 
   <div class="normal-text">
+    <h3>Nieużywane tagi</h3>
+
+    <p>
+      Te tagi nie mają żadnych książek.
+      Prawdopodobnie można je usunąć, jeśli nie zawierają cennych informacji
+      albo czekają właśnie na publikację książki.
+    </p>
+
+    <ul>
+    {% for tag in unused_tags %}
+      <li><a href="{{ tag.get_absolute_url }}">{{ tag }} ({{ tag.get_category_display }})</a></li>
+    {% endfor %}
+    </ul>
+
     <h3>Audiobooki</h3>
 
     <table class="stats">
index fca4534..553371e 100644 (file)
@@ -8,7 +8,7 @@ from django.contrib.admin.views.decorators import staff_member_required
 from django.db.models import Count
 from django.shortcuts import render
 
-from catalogue.models import Book, BookMedia
+from catalogue.models import Book, BookMedia, Tag
 from reporting.utils import render_to_pdf, render_to_csv, generated_file_view
 
 
@@ -60,10 +60,13 @@ def stats_page(request):
         ]
         etags.append(d)
 
+    unused_tags = Tag.objects.exclude(category='set').filter(items=None, book=None)
+        
     return render(request, 'reporting/main.html', {
         'media_types': media_types,
         'licenses': licenses,
         'etags': etags,
+        'unused_tags': unused_tags,
     })