From dd79388f81f84ba46c989ba025a98c92f8d83843 Mon Sep 17 00:00:00 2001 From: mkovalua Date: Tue, 5 May 2026 17:18:56 +0300 Subject: [PATCH 1/2] add nodes and preprints files reinding on account merging --- osf/models/user.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/osf/models/user.py b/osf/models/user.py index 04cc0df6662..c44565beaab 100644 --- a/osf/models/user.py +++ b/osf/models/user.py @@ -877,6 +877,30 @@ def merge_user(self, user): except Exception as e: logger.exception(f'Failed to SHARE reindex preprint {preprint._id} during user merge: {e}') + from django.contrib.contenttypes.models import ContentType + from osf.models import AbstractNode, Preprint + from addons.osfstorage.models import OsfStorageFile + node_ctype = ContentType.objects.get_for_model(AbstractNode) + preprint_ctype = ContentType.objects.get_for_model(Preprint) + nodes_files_to_reindex = OsfStorageFile.objects.filter( + target_object_id__in=user.contributed.values_list('id', flat=True), target_content_type=node_ctype, + guids__isnull=False + ) + preprints_files_to_reindex = OsfStorageFile.objects.filter( + target_object_id__in=user.preprints.values_list('id', flat=True), target_content_type=preprint_ctype, + guids__isnull=False + ) + for file in nodes_files_to_reindex.iterator(chunk_size=100): + try: + update_share(file) + except Exception as e: + logger.exception(f'Failed to SHARE reindex file {file._id} during user merge: {e}') + for file in preprints_files_to_reindex.iterator(chunk_size=100): + try: + update_share(file) + except Exception as e: + logger.exception(f'Failed to SHARE reindex preprints file {file._id} during user merge: {e}') + def _merge_users_preprints(self, user): """ Preprints use guardian. The PreprintContributor table stores order and bibliographic information. From de265752491d1e67f151a7e977fc438cc8c2b2a3 Mon Sep 17 00:00:00 2001 From: mkovalua Date: Fri, 8 May 2026 17:04:51 +0300 Subject: [PATCH 2/2] resolve CR --- osf/models/user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osf/models/user.py b/osf/models/user.py index c44565beaab..23eae1a91c5 100644 --- a/osf/models/user.py +++ b/osf/models/user.py @@ -18,6 +18,7 @@ from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager from django.contrib.auth.hashers import check_password from django.contrib.auth.models import PermissionsMixin +from django.contrib.contenttypes.models import ContentType from django.core.exceptions import FieldDoesNotExist from django.dispatch import receiver from django.db import models @@ -877,7 +878,6 @@ def merge_user(self, user): except Exception as e: logger.exception(f'Failed to SHARE reindex preprint {preprint._id} during user merge: {e}') - from django.contrib.contenttypes.models import ContentType from osf.models import AbstractNode, Preprint from addons.osfstorage.models import OsfStorageFile node_ctype = ContentType.objects.get_for_model(AbstractNode)