def create_permission(apps, schema_editor): Permission = apps.get_model('auth', 'Permission') ContentType = apps.get_model('contenttypes', 'ContentType') get_permission_object_by_name('auth.browse_user', Permission, ContentType, create_if_needed=True) get_permission_object_by_name('auth.read_user', Permission, ContentType, create_if_needed=True)
def changeset_permissions(apps, schema_editor): Permission = apps.get_model('auth', 'Permission') ContentType = apps.get_model('contenttypes', 'ContentType') Group = apps.get_model('auth', 'Group') # Make sure there's a group "ApproveChangesets" and another one # "QueueChangesets" change_changesets_group, __ = Group.objects.get_or_create(name=CHANGE_CHANGESETS_GROUP) approve_changesets_group, __ = Group.objects.get_or_create(name=APPROVE_CHANGESETS_GROUP) queue_changesets_group, __ = Group.objects.get_or_create(name=QUEUE_CHANGESETS_GROUP) # Useful permissions approve_changeset_permission = get_permission_object_by_name( APPROVE_CHANGESET_PERMISSION, Permission, ContentType, True) queue_changeset_permission = get_permission_object_by_name( QUEUE_CHANGESET_PERMISSION, Permission, ContentType, True) browse_permission = get_permission_object_by_name(BROWSE_CHANGESETS_PERMISSION, Permission, ContentType, True) read_permission = get_permission_object_by_name(READ_CHANGESET_PERMISSION, Permission, ContentType, True) edit_permission = get_permission_object_by_name(EDIT_CHANGESET_PERMISSION, Permission, ContentType, True) add_permission = get_permission_object_by_name(ADD_CHANGESET_PERMISSION, Permission, ContentType, True) delete_permission = get_permission_object_by_name(DELETE_CHANGESET_PERMISSION, Permission, ContentType, True) browse_changerecords_permission = get_permission_object_by_name('changesets.browse_changerecord', Permission, ContentType, True) browse_citizens_permission = get_permission_object_by_name('civil_registry.browse_citizen', Permission, ContentType, True) change_changesets_group.permissions.add( browse_permission, read_permission, edit_permission, add_permission, delete_permission, browse_changerecords_permission, browse_citizens_permission, ) approve_changesets_group.permissions.add( approve_changeset_permission, browse_permission, read_permission, edit_permission, add_permission, delete_permission, browse_changerecords_permission, browse_citizens_permission, ) queue_changesets_group.permissions.add( queue_changeset_permission, browse_permission, read_permission, edit_permission, add_permission, delete_permission, browse_changerecords_permission, browse_citizens_permission, )
def test_approval_warning_checkbox(self): # If the changeset has approvals, we include the approval warning checkbox # If not, we don't. # New changeset form = ChangesetForm(data=self.data, request=MagicMock()) self.assertNotIn('okay_to_remove_approvals', form.fields) # Existing changeset without approvals changeset = ChangesetFactory() form = ChangesetForm(instance=changeset, data=self.data, request=MagicMock()) self.assertNotIn('okay_to_remove_approvals', form.fields) # Approvals self.approver = UserFactory() self.approver.user_permissions.add( get_permission_object_by_name(APPROVE_CHANGESET_PERMISSION)) changeset.approve(self.approver) form = ChangesetForm(instance=changeset, data=self.data, request=MagicMock()) self.assertIn('okay_to_remove_approvals', form.fields) # And we must check it self.assertFalse(form.is_valid()) self.assertIn('okay_to_remove_approvals', form.errors) # If we save, it removes the approvals self.data['okay_to_remove_approvals'] = True mock_request = MagicMock() mock_request.__class__ = HttpRequest form = ChangesetForm(instance=changeset, data=self.data, request=mock_request) self.assertTrue(form.is_valid(), form.errors) changeset = form.save() self.assertEqual(0, changeset.number_of_approvals)
def give_edit_permission(user): """Give user edit permission, and return updated object""" perm = get_permission_object_by_name(EDIT_CHANGESET_PERMISSION) user.user_permissions.add(perm) return refresh_model(user)
def give_queue_permission(user): """Give user approve permission, and return updated object""" perm = get_permission_object_by_name(QUEUE_CHANGESET_PERMISSION) user.user_permissions.add(perm) return refresh_model(user)
def give_approve_permission(user): """Give user approve permission, and return updated object""" user.user_permissions.add( get_permission_object_by_name(APPROVE_CHANGESET_PERMISSION)) return refresh_model(user)
def give_approve_permission(user): """Give user approve permission, and return updated object""" user.user_permissions.add(get_permission_object_by_name(APPROVE_CHANGESET_PERMISSION)) return refresh_model(user)