remove last_editor field from db

This commit is contained in:
Your Name 2023-08-11 16:14:44 -04:00 committed by Henri Dickson
parent 61ca5f8629
commit bcd35f3526
8 changed files with 33 additions and 13 deletions

View file

@ -17,7 +17,6 @@ from ninja import Schema
from polymorphic.models import PolymorphicModel
from catalog.common import jsondata
from users.models import User
from .mixins import SoftDeleteMixin
from .utils import DEFAULT_ITEM_COVER, item_cover_path, resource_cover_path
@ -25,6 +24,8 @@ from .utils import DEFAULT_ITEM_COVER, item_cover_path, resource_cover_path
if TYPE_CHECKING:
from django.utils.functional import _StrOrPromise
from users.models import User
_logger = logging.getLogger(__name__)
@ -274,9 +275,6 @@ class Item(SoftDeleteMixin, PolymorphicModel):
default=None,
related_name="merged_from_items",
)
last_editor = models.ForeignKey(
User, on_delete=models.SET_NULL, related_name="+", null=True, blank=False
)
class Meta:
index_together = [
@ -293,6 +291,11 @@ class Item(SoftDeleteMixin, PolymorphicModel):
object_id=self.id, content_type_id__in=list(item_content_types().values())
)
@cached_property
def last_editor(self) -> "User | None":
last_edit = self.history.order_by("-timestamp").first()
return last_edit.actor if last_edit else None
def clear(self):
self.set_parent_item(None)
self.primary_lookup_id_value = None

View file

@ -0,0 +1,17 @@
# Generated by Django 4.2.4 on 2023-08-11 20:13
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("catalog", "0010_alter_item_polymorphic_ctype"),
]
operations = [
migrations.RemoveField(
model_name="item",
name="last_editor",
),
]

View file

@ -87,7 +87,6 @@ def init_catalog_audit_log():
"metadata",
"created_time",
"edited_time",
"last_editor",
# related fields are not supported in django-auditlog yet
"lookup_ids",
"external_resources",

View file

@ -43,7 +43,14 @@
{% for log in item.history.all %}
<tr>
<td colspan="3">
<b title="#{{ log.id }}">{{ log.actor }} {{ log.get_action_display }} on {{ log.timestamp }}</b>
<b title="#{{ log.id }}">
{% if request.user.is_staff or log.actor.preference.show_last_edit %}
{{ log.actor.handler }}
{% else %}
<i class="fa-solid fa-user-secret"></i>
{% endif %}
</b>
{{ log.get_action_display }} on {{ log.timestamp }}
</td>
</tr>
{% for key, value in log.changes_dict.items %}

View file

@ -146,7 +146,7 @@
{% if item.last_editor and item.last_editor.preference.show_last_edit %}
<span>
{% trans '最近编辑:' %}
<a href="{{ item.last_editor.url }}">{{ item.last_editor | default:"" }}</a>
<a href="{{ item.last_editor.url }}">{{ item.last_editor.display_name | default:"" }}</a>
</span>
{% endif %}
</div>

View file

@ -61,7 +61,6 @@ def create(request, item_model):
f"Invalid parent type: {form.instance.__class__} -> {parent.__class__}"
)
if form.is_valid():
form.instance.last_editor = request.user
form.instance.edited_time = timezone.now()
if parent:
form.instance.set_parent_item(parent)
@ -110,7 +109,6 @@ def edit(request, item_path, item_uuid):
form.fields["primary_lookup_id_type"].disabled = True
form.fields["primary_lookup_id_value"].disabled = True
if form.is_valid():
form.instance.last_editor = request.user
form.instance.edited_time = timezone.now()
form.instance.save()
return redirect(form.instance.url)

View file

@ -312,8 +312,6 @@ class DoubanImporter:
print(f"fetching {url}")
site.get_resource_ready()
item = site.get_item()
item.last_editor = self.user
item.save()
else:
# print(f"matched {url}")
print(".", end="", flush=True)

View file

@ -114,8 +114,6 @@ class GoodreadsImporter:
resource = site.get_resource_ready()
if resource and resource.item:
book = resource.item
book.last_editor = user
book.save()
return book
@classmethod