Skip to content

Commit

Permalink
update merge function to better distinguish between the requesting us…
Browse files Browse the repository at this point in the history
…er addons and the user being merged addons
  • Loading branch information
Johnetordoff committed Feb 25, 2025
1 parent db7a03a commit ba7a25d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
19 changes: 18 additions & 1 deletion osf/models/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion osf/models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit ba7a25d

Please sign in to comment.