From 3b28bbbabe3a51bf756d087bd268d8e0d952cd5c Mon Sep 17 00:00:00 2001 From: Suejung Shin Date: Wed, 29 Jan 2025 15:15:48 -0800 Subject: [PATCH 1/3] fix: Remove from plan activated users when removing from org --- tasks/sync_teams.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasks/sync_teams.py b/tasks/sync_teams.py index 1f0e42016..a04c0e256 100644 --- a/tasks/sync_teams.py +++ b/tasks/sync_teams.py @@ -58,6 +58,8 @@ def run_impl(self, db_session, ownerid, *, username=None, **kwargs): ownerid=ownerid, ), ) + for org in removed_orgs: + org.plan_activated_users.remove(ownerid) owner.updatestamp = datetime.now() owner.organizations = team_ids From f1eddb415c00082cc35eba784508b1b8027f3a84 Mon Sep 17 00:00:00 2001 From: Suejung Shin Date: Wed, 29 Jan 2025 15:45:49 -0800 Subject: [PATCH 2/3] fix test --- tasks/sync_teams.py | 10 ++++++++-- tasks/tests/unit/test_sync_teams_task.py | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tasks/sync_teams.py b/tasks/sync_teams.py index a04c0e256..95992ad82 100644 --- a/tasks/sync_teams.py +++ b/tasks/sync_teams.py @@ -58,8 +58,14 @@ def run_impl(self, db_session, ownerid, *, username=None, **kwargs): ownerid=ownerid, ), ) - for org in removed_orgs: - org.plan_activated_users.remove(ownerid) + for org_ownerid in removed_orgs: + org = db_session.query(Owner).filter(Owner.ownerid == org_ownerid).first() + if org and ownerid in org.plan_activated_users: + log.info( + "Removing user from org's plan_activated_users", + extra=dict(user_ownerid=ownerid, org_ownerid=org_ownerid) + ) + org.plan_activated_users.remove(ownerid) owner.updatestamp = datetime.now() owner.organizations = team_ids diff --git a/tasks/tests/unit/test_sync_teams_task.py b/tasks/tests/unit/test_sync_teams_task.py index 8b7056e33..cfed4ac47 100644 --- a/tasks/tests/unit/test_sync_teams_task.py +++ b/tasks/tests/unit/test_sync_teams_task.py @@ -37,10 +37,12 @@ def test_team_removed(self, mocker, mock_configuration, dbsession, codecov_vcr): service="github", unencrypted_oauth_token=token, ) + prev_team.plan_activated_users = [user.ownerid] dbsession.add(user) dbsession.flush() SyncTeamsTask().run_impl(dbsession, user.ownerid, using_integration=False) assert prev_team.ownerid not in user.organizations + assert user.ownerid not in prev_team.plan_activated_users def test_team_data_updated( self, mocker, mock_configuration, dbsession, codecov_vcr From a001d68be7128c3f65fd15bbb81a8522afa4eeeb Mon Sep 17 00:00:00 2001 From: Suejung Shin Date: Wed, 29 Jan 2025 16:02:22 -0800 Subject: [PATCH 3/3] cleanup --- tasks/sync_teams.py | 6 ++++-- tasks/tests/unit/test_sync_teams_task.py | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tasks/sync_teams.py b/tasks/sync_teams.py index 95992ad82..11c80d80e 100644 --- a/tasks/sync_teams.py +++ b/tasks/sync_teams.py @@ -59,11 +59,13 @@ def run_impl(self, db_session, ownerid, *, username=None, **kwargs): ), ) for org_ownerid in removed_orgs: - org = db_session.query(Owner).filter(Owner.ownerid == org_ownerid).first() + org = ( + db_session.query(Owner).filter(Owner.ownerid == org_ownerid).first() + ) if org and ownerid in org.plan_activated_users: log.info( "Removing user from org's plan_activated_users", - extra=dict(user_ownerid=ownerid, org_ownerid=org_ownerid) + extra=dict(user_ownerid=ownerid, org_ownerid=org_ownerid), ) org.plan_activated_users.remove(ownerid) diff --git a/tasks/tests/unit/test_sync_teams_task.py b/tasks/tests/unit/test_sync_teams_task.py index cfed4ac47..b85455bc8 100644 --- a/tasks/tests/unit/test_sync_teams_task.py +++ b/tasks/tests/unit/test_sync_teams_task.py @@ -39,6 +39,7 @@ def test_team_removed(self, mocker, mock_configuration, dbsession, codecov_vcr): ) prev_team.plan_activated_users = [user.ownerid] dbsession.add(user) + dbsession.add(prev_team) dbsession.flush() SyncTeamsTask().run_impl(dbsession, user.ownerid, using_integration=False) assert prev_team.ownerid not in user.organizations