From 20bb990049f3ac6e034f384a1c57fe615333aa42 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 19 Jun 2023 12:30:39 -0400 Subject: [PATCH] audit log ui --- catalog/common/models.py | 9 ++- catalog/search/views.py | 2 +- catalog/templates/_sidebar_edit.html | 87 +++++++++++++++++++--------- catalog/templates/catalog_edit.html | 33 ----------- catalog/urls.py | 7 +++ catalog/views.py | 17 ++++-- 6 files changed, 85 insertions(+), 70 deletions(-) diff --git a/catalog/common/models.py b/catalog/common/models.py index c7b2291d..ef51c815 100644 --- a/catalog/common/models.py +++ b/catalog/common/models.py @@ -344,8 +344,12 @@ class Item(SoftDeleteMixin, PolymorphicModel): ) def merge_to(self, to_item): + self.log_action({"!merged": [str(self.merged_to_item), str(to_item)]}) if to_item is None: - raise ValueError("cannot merge to an empty item") + if self.merged_to_item is not None: + self.merged_to_item = None + self.save() + return elif to_item.merged_to_item is not None: raise ValueError("cannot merge with an item aleady merged") if to_item.__class__ != self.__class__: @@ -377,8 +381,7 @@ class Item(SoftDeleteMixin, PolymorphicModel): obj, action=LogEntry.Action.UPDATE, changes={ - "polymorphic_ctype_id": [old_ct.id, ct.id], - "__model__": [old_ct.model, ct.model], + "!recast": [[old_ct.model, old_ct.id], [ct.model, ct.id]], }, ) return obj diff --git a/catalog/search/views.py b/catalog/search/views.py index d6d2a6d2..ad368565 100644 --- a/catalog/search/views.py +++ b/catalog/search/views.py @@ -65,7 +65,7 @@ def fetch(request, url, is_refetch: bool = False, site: AbstractSite | None = No if item and is_refetch: item.log_action( { - "__refetch__": [url, None], + "!refetch": [url, None], } ) job_id = enqueue_fetch(url, is_refetch) diff --git a/catalog/templates/_sidebar_edit.html b/catalog/templates/_sidebar_edit.html index d5d7acae..edb8cfc6 100644 --- a/catalog/templates/_sidebar_edit.html +++ b/catalog/templates/_sidebar_edit.html @@ -5,14 +5,42 @@ {% load oauth_token %} {% load truncate %} {% if item %} -
进阶编辑选项
- {% if item.is_deleted %}

🚫 条目已被删除

{% endif %} - {% if item.child_items %}

🚫 条目下已有子项

{% endif %} - {% if item.merged_to_item %}

🚫 条目已被合并到其他条目

{% endif %} - {% if item.journal_exists %}

🚸 条目已被用户标记过

{% endif %} +
+ + + + + + + + + +
+
编辑选项
+ {% if item.is_deleted %} +

+ 条目已被删除 +

+ {% endif %} + {% if item.child_items %} +

+ 条目下已有子项 +

+ {% endif %} + {% if item.merged_to_item %} +

+ 条目已被合并到其他条目 +

+ {% endif %} + {% if item.journal_exists %} +

+ 条目已被用户标记过 +

+ {% endif %} {% for i in item.merged_from_items.all %} {% if forloop.first %} - 🚸 以下条目被并入本条目: + 以下条目被并入本条目: {% endif %} {% endfor %} {% if item.editable or request.user.is_staff %} - {% for res in form.instance.external_resources.all %} + {% for res in item.external_resources.all %}
{% trans '源网站' %}: {{ res.site_name.label }} @@ -56,9 +84,9 @@
{% endif %} -
- {% trans '切换分类' %} - {% if item.class_name == "movie" %} + {% if item.class_name == "movie" %} +
+ {% trans '切换分类' %}
@@ -66,13 +94,18 @@
- {% elif item.class_name == "tvshow" %} - {% if not item.all_seasons or request.user.is_staff %} - {% comment %}
+
+ {% elif item.class_name == "tvshow" %} + {% if not item.all_seasons or request.user.is_staff %} +
+ {% trans '切换分类' %} + {% csrf_token %} - {% endcomment %} +
@@ -80,11 +113,11 @@
- {% endif %} - {% else %} - 此类条目无法切换 +
{% endif %} -
+ {% else %} + + {% endif %} {% if item.class_name == "tvseason" or item.class_name == "performanceproduction" %} {% if not item.show or request.user.is_staff %}
@@ -129,13 +162,13 @@
-
- {% trans '删除' %} - {% if item.class_name == "tvshow" and item.all_seasons %} - ⛔️ 条目下有子项 - {% elif item.merged_from_items.all %} - ⛔️ 有其他条目被并入 - {% else %} + {% if item.child_items %} + + {% elif item.merged_from_items.all %} + + {% else %} +
+ {% trans '删除' %}
@@ -145,8 +178,8 @@ {% if item.is_deleted or item.merged_to_item %}disabled{% endif %} value="{% trans '删除' %}">
- {% endif %} -
+
+ {% endif %} {% endif %} {% endif %} {% endif %} diff --git a/catalog/templates/catalog_edit.html b/catalog/templates/catalog_edit.html index f8b49b7c..3f816959 100644 --- a/catalog/templates/catalog_edit.html +++ b/catalog/templates/catalog_edit.html @@ -53,39 +53,6 @@ onclick="{% if item %}window.location='{{ item.url }}'{% else %}history.go(-1){% endif %}"> - {% if request.user.is_staff %} -
- - - - - - - - - - {% for log in item.history.all %} - - - - {% for key, value in log.changes_dict.items %} - - - - - - {% empty %} -

No data.

- {% endfor %} - {% empty %} -

No history for this item has been logged yet.

- {% endfor %} - -
FieldFromTo
- ({{ log.id }}) {{ log.actor }} {{ log.get_action_display }} on {{ log.timestamp }} -
{{ key }}{{ value.0|default:"-" }}{{ value.1|default:"-" }}
-
- {% endif %}