diff --git a/projects/schema.py b/projects/schema.py index 1ca4bdf1..4c7d5257 100644 --- a/projects/schema.py +++ b/projects/schema.py @@ -13,6 +13,7 @@ class ProjectPermissionsType(ObjectType): publish = graphene.Boolean() manage_event_groups = graphene.Boolean() + can_send_to_all_in_project = graphene.Boolean() @staticmethod def resolve_publish(parent, info): @@ -24,6 +25,11 @@ def resolve_manage_event_groups(parent, info): project, user = parent return user.can_manage_event_groups_in_project(project) + @staticmethod + def resolve_can_send_to_all_in_project(parent, info): + project, user = parent + return user.can_send_messages_to_all_in_project(project) + class ProjectTranslationType(DjangoObjectType): language_code = LanguageEnum(required=True) diff --git a/users/tests/queries.py b/users/tests/queries.py index 3713b646..cf587664 100644 --- a/users/tests/queries.py +++ b/users/tests/queries.py @@ -69,6 +69,7 @@ myPermissions { publish manageEventGroups + canSendToAllInProject } } } diff --git a/users/tests/snapshots/snap_test_api.py b/users/tests/snapshots/snap_test_api.py index 4a3db706..3f07a0a1 100644 --- a/users/tests/snapshots/snap_test_api.py +++ b/users/tests/snapshots/snap_test_api.py @@ -105,6 +105,7 @@ { 'node': { 'myPermissions': { + 'canSendToAllInProject': True, 'manageEventGroups': True, 'publish': True }, @@ -114,6 +115,7 @@ { 'node': { 'myPermissions': { + 'canSendToAllInProject': True, 'manageEventGroups': True, 'publish': True }, @@ -123,6 +125,7 @@ { 'node': { 'myPermissions': { + 'canSendToAllInProject': True, 'manageEventGroups': True, 'publish': True }, @@ -132,6 +135,7 @@ { 'node': { 'myPermissions': { + 'canSendToAllInProject': True, 'manageEventGroups': True, 'publish': True }, @@ -152,6 +156,7 @@ { 'node': { 'myPermissions': { + 'canSendToAllInProject': False, 'manageEventGroups': False, 'publish': False }, @@ -161,6 +166,7 @@ { 'node': { 'myPermissions': { + 'canSendToAllInProject': True, 'manageEventGroups': True, 'publish': True }, diff --git a/users/tests/test_api.py b/users/tests/test_api.py index 4284825d..5c531a29 100644 --- a/users/tests/test_api.py +++ b/users/tests/test_api.py @@ -14,6 +14,13 @@ from common.utils import get_global_id from kukkuu.consts import INVALID_EMAIL_FORMAT_ERROR, VERIFICATION_TOKEN_INVALID_ERROR from projects.factories import ProjectFactory +from projects.models import ( + PERM_CAN_ADMINISTRATE_PROJECT, + PERM_CAN_MANAGE_EVENT_GROUPS, + PERM_CAN_PUBLISH_EVENTS, + PERM_CAN_SEND_MESSAGE_TO_ALL_IN_PROJECT, + ProjectPermission, +) from users.factories import GuardianFactory from users.models import Guardian from users.tests.mutations import ( @@ -406,14 +413,24 @@ def test_my_admin_profile_project_admin( project_2 = ProjectFactory( year=2022, name="project where base admin object perm and other object perms" ) - assign_perm("admin", user_api_client.user, [project_1, project_2]) - assign_perm("publish", user_api_client.user, project_2) - assign_perm("manage_event_groups", user_api_client.user, project_2) + assign_perm( + ProjectPermission.ADMIN.value, user_api_client.user, [project_1, project_2] + ) + assign_perm(ProjectPermission.PUBLISH.value, user_api_client.user, project_2) + assign_perm( + ProjectPermission.MANAGE_EVENT_GROUPS.value, user_api_client.user, project_2 + ) + assign_perm( + ProjectPermission.SEND_MESSAGE_TO_ALL_IN_PROJECT.value, + user_api_client.user, + project_2, + ) if has_also_model_perms: - assign_perm("projects.admin", user_api_client.user) - assign_perm("projects.publish", user_api_client.user) - assign_perm("projects.manage_event_groups", user_api_client.user) + assign_perm(PERM_CAN_ADMINISTRATE_PROJECT, user_api_client.user) + assign_perm(PERM_CAN_PUBLISH_EVENTS, user_api_client.user) + assign_perm(PERM_CAN_MANAGE_EVENT_GROUPS, user_api_client.user) + assign_perm(PERM_CAN_SEND_MESSAGE_TO_ALL_IN_PROJECT, user_api_client.user) ProjectFactory(year=2030, name="project where no object perms")