Revert support for old user permissions params

The fields used for user permissions on
permissions forms were changed as part of the work
converting the checkboxes to GOVUK Frontend.

This removes code added to protect against a
situation where the server-side app was running
this updated code but clients were POSTing from
pages that were not, and so sending the old HTTP
params.
This commit is contained in:
Tom Byers
2020-07-31 15:16:56 +01:00
parent 75bac87a4d
commit 468a43bd68
2 changed files with 16 additions and 101 deletions

View File

@@ -755,20 +755,6 @@ def filter_by_broadcast_permissions(valuelist):
return [entry for entry in valuelist if any(entry in role for role in broadcast_permissions)]
# Included to support both versions of how user permissions are handled in permissions forms
# Remove when changeover to new version (permissions_field) is complete
PermissionsAbstract = type("PermissionsAbstract", (StripWhitespaceForm,), {
permission: BooleanField(label) for permission, label in permissions
})
# Included to support both versions of how user permissions are handled in permissions forms
# Remove when changeover to new version (permissions_field) is complete
BroadcastPermissionsAbstract = type("BroadcastPermissionsAbstract", (StripWhitespaceForm,), {
permission: BooleanField(label) for permission, label in broadcast_permissions
})
class BasePermissionsForm(StripWhitespaceForm):
def __init__(self, all_template_folders=None, *args, **kwargs):
super().__init__(*args, **kwargs)
@@ -804,25 +790,9 @@ class BasePermissionsForm(StripWhitespaceForm):
}
)
# Modified to support both versions of how user permissions are handled in permissions forms
# Remove when changeover to new version (permissions_field) is complete
@property
def permissions(self):
permissions_field_data = set(self.permissions_field.data)
permissions_fields_data = {field.id for field in self.permissions_fields if field.data is True}
if len(permissions_field_data) == 0 and len(permissions_fields_data) != 0:
return permissions_fields_data
else:
return permissions_field_data
# Included to support both versions of how user permissions are handled in permissions forms
# Remove when changeover to new version (permissions_field) is complete
@property
def permissions_fields(self):
return (
getattr(self, permission) for permission, field in self.__dict__.items()
if isinstance(field, BooleanField)
)
return set(self.permissions_field.data)
@classmethod
def from_user(cls, user, service_id, **kwargs):
@@ -836,15 +806,11 @@ class BasePermissionsForm(StripWhitespaceForm):
)
# Included to support both versions of how user permissions are handled in permissions forms
# Remove when changeover to new version (permissions_field) is complete
class PermissionsForm(PermissionsAbstract, BasePermissionsForm):
class PermissionsForm(BasePermissionsForm):
pass
# Included to support both versions of how user permissions are handled in permissions forms
# Remove when changeover to new version (permissions_field) is complete
class BroadcastPermissionsForm(BroadcastPermissionsAbstract, BasePermissionsForm):
class BroadcastPermissionsForm(BasePermissionsForm):
permissions_field = govukCheckboxesField(
'Permssions',

View File

@@ -514,22 +514,6 @@ def test_should_not_show_page_for_non_team_member(
{},
set(),
),
( # should be able to handle permissions being sent as booleans, until changeover to a list is complete
{
'view_activity': 'y',
'send_messages': 'y',
'manage_templates': 'y',
'manage_service': 'y',
'manage_api_keys': 'y',
},
{
'view_activity',
'send_messages',
'manage_templates',
'manage_service',
'manage_api_keys',
}
),
])
def test_edit_user_permissions(
client_request,
@@ -600,20 +584,6 @@ def test_edit_user_permissions(
'view_activity',
}
),
( # should be able to handle permissions being sent as booleans, until changeover to a list is complete
{
'send_messages': 'y',
'manage_templates': 'y',
'manage_service': 'y',
'manage_api_keys': 'y',
},
{
'view_activity',
'send_messages',
'manage_service',
'manage_templates',
}
),
])
def test_edit_user_permissions_for_broadcast_service(
client_request,
@@ -858,10 +828,9 @@ def test_should_show_folder_permission_form_if_service_has_folder_permissions_en
assert len(folder_checkboxes) == 3
@pytest.mark.parametrize('email_address, gov_user, old_permissions', [
('test@example.gov.uk', True, False),
('test@example.com', False, False),
('test@example.gov.uk', True, True)
@pytest.mark.parametrize('email_address, gov_user', [
('test@example.gov.uk', True),
('test@example.com', False)
])
def test_invite_user(
client_request,
@@ -870,7 +839,6 @@ def test_invite_user(
sample_invite,
email_address,
gov_user,
old_permissions,
mock_get_template_folders,
mock_get_organisations,
):
@@ -880,25 +848,19 @@ def test_invite_user(
mocker.patch('app.models.user.InvitedUsers.client_method', return_value=[sample_invite])
mocker.patch('app.models.user.Users.client_method', return_value=[active_user_with_permissions])
mocker.patch('app.invite_api_client.create_invite', return_value=sample_invite)
data = {'email_address': email_address}
if old_permissions:
data['view_activity'] = 'y'
data['send_messages'] = 'y'
data['manage_templates'] = 'y'
data['manage_service'] = 'y'
data['manage_api_keys'] = 'y'
else:
data['permissions_field'] = [
'view_activity',
'send_messages',
'manage_templates',
'manage_service',
'manage_api_keys',
]
page = client_request.post(
'main.invite_user',
service_id=SERVICE_ONE_ID,
_data=data,
_data={
'email_address': email_address,
'permissions_field': [
'view_activity',
'send_messages',
'manage_templates',
'manage_service',
'manage_api_keys',
]
},
_follow_redirects=True,
)
assert page.h1.string.strip() == 'Team members'
@@ -1003,19 +965,6 @@ def test_invite_user_with_email_auth_service(
'view_activity',
},
),
( # should be able to handle permissions being sent as booleans, until changeover to a list is complete
{
'send_messages': 'y',
'manage_templates': 'y',
'manage_service': 'y',
},
{
'view_activity',
'send_messages',
'manage_templates',
'manage_service',
},
)
))
def test_invite_user_to_broadcast_service(
client_request,