remove last_editor field from db
This commit is contained in:
parent
61ca5f8629
commit
bcd35f3526
8 changed files with 33 additions and 13 deletions
|
@ -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
|
||||
|
|
17
catalog/migrations/0011_remove_item_last_editor.py
Normal file
17
catalog/migrations/0011_remove_item_last_editor.py
Normal 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",
|
||||
),
|
||||
]
|
|
@ -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",
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue