diff --git a/catalog/views_edit.py b/catalog/views_edit.py index d8a19ccc..3c98cb42 100644 --- a/catalog/views_edit.py +++ b/catalog/views_edit.py @@ -10,7 +10,7 @@ from django.views.decorators.http import require_http_methods from loguru import logger from common.utils import discord_send, get_uuid_or_404 -from journal.models import update_journal_for_merged_item +from journal.models import update_journal_for_merged_item_task from .common.models import ExternalResource, IdealIdTypes, IdType from .forms import * @@ -289,7 +289,9 @@ def merge(request, item_path, item_uuid): ) logger.warning(f"{request.user} merges {item} to {new_item}") item.merge_to(new_item) - update_journal_for_merged_item(item_uuid) + django_rq.get_queue("crawl").enqueue( + update_journal_for_merged_item_task, request.user.pk, item.uuid + ) discord_send( "audit", f"{item.absolute_url}?skipcheck=1\n⬇\n{new_item.absolute_url}\nby [@{request.user.username}]({request.user.absolute_url})", diff --git a/journal/models/__init__.py b/journal/models/__init__.py index e4d0de3b..690246bc 100644 --- a/journal/models/__init__.py +++ b/journal/models/__init__.py @@ -26,6 +26,7 @@ from .utils import ( remove_data_by_user, reset_journal_visibility_for_user, update_journal_for_merged_item, + update_journal_for_merged_item_task, ) __all__ = [ @@ -61,4 +62,5 @@ __all__ = [ "remove_data_by_user", "reset_journal_visibility_for_user", "update_journal_for_merged_item", + "update_journal_for_merged_item_task", ] diff --git a/journal/models/utils.py b/journal/models/utils.py index b0e474a6..16685d90 100644 --- a/journal/models/utils.py +++ b/journal/models/utils.py @@ -1,10 +1,11 @@ +from auditlog.context import set_actor from django.db import transaction from django.db.utils import IntegrityError from django.utils.translation import gettext_lazy as _ from loguru import logger from catalog.models import Item -from users.models import APIdentity +from users.models import APIdentity, User from .collection import Collection, CollectionMember, FeaturedCollection from .comment import Comment @@ -36,6 +37,11 @@ def remove_data_by_user(owner: APIdentity): FeaturedCollection.objects.filter(owner=owner).delete() +def update_journal_for_merged_item_task(editing_user_id: int, legacy_item_uuid: str): + with set_actor(User.objects.get(pk=editing_user_id)): + update_journal_for_merged_item(legacy_item_uuid) + + def update_journal_for_merged_item( legacy_item_uuid: str, delete_duplicated: bool = False ):