From a87005e00b2a4fd26d7310fd8ff59f07f9c4cf04 Mon Sep 17 00:00:00 2001 From: Mathieu Agopian Date: Wed, 7 Oct 2026 10:57:37 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(migration)=20import=5Fmigration=20man?= =?UTF-8?q?agement=20command=20imports=20LinkTrace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Straightforward LinkTrace imports Signed-off-by: Mathieu Agopian --- .../management/commands/import_migration.py | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/backend/core/management/commands/import_migration.py b/src/backend/core/management/commands/import_migration.py index 1dabda548..4a34c1fc6 100644 --- a/src/backend/core/management/commands/import_migration.py +++ b/src/backend/core/management/commands/import_migration.py @@ -21,7 +21,7 @@ import sys from django.core.management.base import BaseCommand -from core.models import Document, DocumentAccess, Invitation, User +from core.models import Document, DocumentAccess, Invitation, LinkTrace, User class Command(BaseCommand): @@ -94,6 +94,8 @@ class Command(BaseCommand): created = self._import_document_access(pk, fields, user_uuid_remap) case "core.invitation": created = self._import_invitation(pk, fields, user_uuid_remap) + case "core.linktrace": + created = self._import_link_trace(pk, fields, user_uuid_remap) case _: if model_label not in skipped_models: self.stderr.write( @@ -289,3 +291,24 @@ class Command(BaseCommand): Invitation.objects.bulk_create([Invitation(**fields, id=pk)]) return True + + def _import_link_trace(self, pk, fields, user_uuid_remap): + """ + Import one link trace record. + + Returns True if a new row was created, False if it already existed. + + LinkTrace records which logged-in users have accessed a document via a + shared link. They make the document appear in the user's document list + even when the user has no explicit role on it. + """ + user_id = fields.get("user_id") + if user_id and user_id in user_uuid_remap: + fields["user_id"] = user_uuid_remap[user_id] + + if LinkTrace.objects.filter(id=pk).exists(): + return False + + LinkTrace.objects.bulk_create([LinkTrace(**fields, id=pk)]) + return True +