diff --git a/osf/models/mixins.py b/osf/models/mixins.py index 7c82044fd1a..702fbabac09 100644 --- a/osf/models/mixins.py +++ b/osf/models/mixins.py @@ -52,7 +52,7 @@ ReviewTriggers, ) -from osf.utils.requests import get_request_and_user_id +from osf.utils.requests import get_request_and_user_id, get_current_request from website.project import signals as project_signals from website import settings, mails, language from website.project.licenses import set_license @@ -496,6 +496,23 @@ def get_addons(self, service_type: str | None = None): for config in self.ADDONS_AVAILABLE ] if _f] + def get_addons_for_self(self): + """ + This refers to the model self, not the user making the request. + """ + request = get_current_request() + if flag_is_active(request, features.ENABLE_GV): + osf_addons = filter( + lambda x: x is not None, + (self.get_addon(addon) for addon in self.OSF_HOSTED_ADDONS) + ) + return itertools.chain(osf_addons, self._get_addons_from_gv(requesting_user_id=self._id)) + + return [_f for _f in [ + self.get_addon(config.short_name) + for config in self.ADDONS_AVAILABLE + ] if _f] + def get_oauth_addons(self): # TODO: Using hasattr is a dirty hack - we should be using issubclass(). # We can't, because importing the parent classes here causes a diff --git a/osf/models/user.py b/osf/models/user.py index 5a1183f9547..af96359311b 100644 --- a/osf/models/user.py +++ b/osf/models/user.py @@ -720,7 +720,7 @@ def contributed(self): @property def can_be_merged(self): """The ability of the `merge_user` method to fully merge the user""" - return all(addon.can_be_merged for addon in self.get_addons()) + return all(addon.can_be_merged for addon in self.get_addons_for_self()) def merge_user(self, user): """Merge a registered user into this account. This user will be