Skip to content

Commit

Permalink
Rename function get_organization_owners_team
Browse files Browse the repository at this point in the history
Rename function get_organization_owners_team to
get_or_create_organization_owners_team
  • Loading branch information
DavisRayM committed May 4, 2020
1 parent 3c5c3ca commit cac43d8
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from onadata.apps.api.viewsets.user_profile_viewset import UserProfileViewSet
from onadata.apps.api.viewsets.project_viewset import ProjectViewSet
from onadata.libs.permissions import OwnerRole
from onadata.apps.api.tools import (get_organization_owners_team,
from onadata.apps.api.tools import (get_or_create_organization_owners_team,
add_user_to_organization)
from onadata.apps.api.models.organization_profile import OrganizationProfile
from onadata.apps.main.models import UserProfile
Expand Down Expand Up @@ -759,7 +759,7 @@ def test_add_members_to_owner_role(self):
self.assertEqual(response.data['users'][1]['user'], 'aboy')
self.assertEqual(response.data['users'][1]['role'], 'owner')

owner_team = get_organization_owners_team(self.organization)
owner_team = get_or_create_organization_owners_team(self.organization)

self.assertIn(aboy, owner_team.user_set.all())

Expand All @@ -772,7 +772,7 @@ def test_add_members_to_owner_role(self):
response = view(request, user='denoinc')
self.assertEqual(response.status_code, 200)

owner_team = get_organization_owners_team(self.organization)
owner_team = get_or_create_organization_owners_team(self.organization)

self.assertNotIn(aboy, owner_team.user_set.all())

Expand Down
6 changes: 3 additions & 3 deletions onadata/apps/api/tests/viewsets/test_project_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from onadata.apps.api import tools
from onadata.apps.api.tests.viewsets.test_abstract_viewset import \
TestAbstractViewSet
from onadata.apps.api.tools import get_organization_owners_team
from onadata.apps.api.tools import get_or_create_organization_owners_team
from onadata.apps.api.viewsets.organization_profile_viewset import \
OrganizationProfileViewSet
from onadata.apps.api.viewsets.project_viewset import ProjectViewSet
Expand Down Expand Up @@ -774,7 +774,7 @@ def test_form_transfer_when_org_creator_creates_project(
response = view(request, user=self.organization.user.username)
self.assertEqual(response.status_code, 201)

owners_team = get_organization_owners_team(self.organization)
owners_team = get_or_create_organization_owners_team(self.organization)
self.assertIn(alice_profile.user, owners_team.user_set.all())

# let bob create a project in org
Expand Down Expand Up @@ -853,7 +853,7 @@ def test_form_transfer_when_org_admin_not_creator_creates_project(
response = view(request, user=self.organization.user.username)
self.assertEqual(response.status_code, 201)

owners_team = get_organization_owners_team(self.organization)
owners_team = get_or_create_organization_owners_team(self.organization)
self.assertIn(alice_profile.user, owners_team.user_set.all())

# let alice create a project in org
Expand Down
4 changes: 2 additions & 2 deletions onadata/apps/api/tests/viewsets/test_team_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from onadata.apps.api.tests.viewsets.test_abstract_viewset import \
TestAbstractViewSet
from onadata.apps.api.tools import add_user_to_team
from onadata.apps.api.tools import get_organization_owners_team, \
from onadata.apps.api.tools import get_or_create_organization_owners_team, \
get_organization_members_team
from onadata.apps.api.viewsets.metadata_viewset import MetaDataViewSet
from onadata.apps.api.viewsets.organization_profile_viewset import \
Expand Down Expand Up @@ -399,7 +399,7 @@ def test_non_owners_should_be_able_to_change_member_permissions(self):

self.assertEqual(response.status_code, 201)

owners_team = get_organization_owners_team(self.organization)
owners_team = get_or_create_organization_owners_team(self.organization)
self.assertIn(chuck_profile.user, owners_team.user_set.all())

alice_data = {'username': 'alice', 'email': '[email protected]'}
Expand Down
4 changes: 2 additions & 2 deletions onadata/apps/api/tests/viewsets/test_widget_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from onadata.libs.permissions import ReadOnlyRole
from onadata.libs.permissions import DataEntryOnlyRole
from onadata.libs.permissions import OwnerRole
from onadata.apps.api.tools import get_organization_owners_team
from onadata.apps.api.tools import get_or_create_organization_owners_team
from onadata.apps.api.viewsets.organization_profile_viewset import\
OrganizationProfileViewSet

Expand Down Expand Up @@ -717,7 +717,7 @@ def test_widget_create_by_org_admin(self):

self.assertEqual(response.status_code, 201)

owners_team = get_organization_owners_team(self.organization)
owners_team = get_or_create_organization_owners_team(self.organization)
self.assertIn(chuck_profile.user, owners_team.user_set.all())

extra = {
Expand Down
22 changes: 12 additions & 10 deletions onadata/apps/api/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,8 @@ def get_organization_members_team(organization):
return team


def get_organization_owners_team(org):
# pylint: disable=invalid-name
def get_or_create_organization_owners_team(org):
"""
Get the owners team of an organization
:param org: organization
Expand All @@ -192,23 +193,22 @@ def get_organization_owners_team(org):
team_name = f'{org.user.username}#{Team.OWNER_TEAM_NAME}'
try:
team = Team.objects.get(name=team_name, organization=org.user)
return team
except Team.DoesNotExist:
from multidb.pinning import use_master # pylint: disable=import-error
with use_master:
queryset = Team.objects.filter(
name=team_name, organization=org.user)
if queryset.count() > 0:
return queryset.first()
else:
return create_owner_team_and_assign_permissions(org)
return queryset.first() # pylint: disable=no-member
return create_owner_team_and_assign_permissions(org)
return team


def remove_user_from_organization(organization, user):
"""Remove a user from an organization"""
team = get_organization_members_team(organization)
remove_user_from_team(team, user)
owners_team = get_organization_owners_team(organization)
owners_team = get_or_create_organization_owners_team(organization)
remove_user_from_team(owners_team, user)

role = get_role_in_org(user, organization)
Expand Down Expand Up @@ -236,7 +236,8 @@ def remove_user_from_team(team, user):

# if team is owners team remove more perms
if team.name.find(Team.OWNER_TEAM_NAME) > 0:
owners_team = get_organization_owners_team(team.organization.profile)
owners_team = get_or_create_organization_owners_team(
team.organization.profile)
members_team = get_organization_members_team(team.organization.profile)
for perm in get_perms_for_model(Team):
remove_perm(perm.codename, user, owners_team)
Expand Down Expand Up @@ -265,7 +266,7 @@ def add_user_to_team(team, user):


def _assign_organization_team_perms(organization, user):
owners_team = get_organization_owners_team(organization.profile)
owners_team = get_or_create_organization_owners_team(organization.profile)
members_team = get_organization_members_team(organization.profile)
for perm in get_perms_for_model(Team):
assign_perm(perm.codename, user, owners_team)
Expand All @@ -281,7 +282,7 @@ def get_organization_members(organization):

def get_organization_owners(organization):
"""Get owners team user queryset"""
team = get_organization_owners_team(organization)
team = get_or_create_organization_owners_team(organization)
return team.user_set.all()


Expand All @@ -290,7 +291,8 @@ def _get_owners(organization):

return [
user
for user in get_organization_owners_team(organization).user_set.all()
for user in get_or_create_organization_owners_team(
organization).user_set.all()
if get_role_in_org(user, organization) == 'owner'
and organization.user != user
]
Expand Down
4 changes: 2 additions & 2 deletions onadata/libs/serializers/organization_member_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from onadata.libs.permissions import OwnerRole
from onadata.libs.permissions import is_organization
from onadata.apps.api.tools import add_user_to_organization
from onadata.apps.api.tools import get_organization_owners_team
from onadata.apps.api.tools import get_or_create_organization_owners_team
from onadata.apps.api.tools import add_user_to_team
from onadata.apps.api.tools import remove_user_from_team
from onadata.apps.api.tools import _get_owners
Expand All @@ -37,7 +37,7 @@ def _set_organization_role_to_user(organization, user, role):
role_cls = ROLES.get(role)
role_cls.add(user, organization)

owners_team = get_organization_owners_team(organization)
owners_team = get_or_create_organization_owners_team(organization)

# add the owner to owners team
if role == OwnerRole.name:
Expand Down
5 changes: 3 additions & 2 deletions onadata/libs/serializers/project_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

from onadata.apps.api.models import OrganizationProfile
from onadata.apps.api.tools import (get_organization_members_team,
get_organization_owners_team)
get_or_create_organization_owners_team)
from onadata.apps.logger.models import Project, XForm
from onadata.libs.permissions import (OwnerRole, ReadOnlyRole, get_role,
is_organization)
Expand Down Expand Up @@ -401,7 +401,8 @@ def update(self, instance, validated_data):
set_owners_permission(owner, instance)

if is_organization(owner.profile):
owners_team = get_organization_owners_team(owner.profile)
owners_team = get_or_create_organization_owners_team(
owner.profile)
members_team = get_organization_members_team(owner.profile)
OwnerRole.add(owners_team, instance)
ReadOnlyRole.add(members_team, instance)
Expand Down

0 comments on commit cac43d8

Please sign in to comment.