def test_get_single_crud_kwargs(self): role = 'zoo.admin' exhibit = Exhibit.objects.first() kwargs = get_single_crud_kwargs(role, ANY, ANY) self.assertEqual(kwargs['role'], role) self.assertNotIn('agent_id', kwargs) self.assertNotIn('agent_type', kwargs) self.assertNotIn('target_id', kwargs) self.assertNotIn('target_type', kwargs) kwargs = get_single_crud_kwargs(ANY, exhibit, ANY) self.assertNotIn('role', kwargs) self.assertEqual(kwargs['agent_id'], exhibit.id) self.assertIn('agent_type', kwargs) self.assertNotIn('target_id', kwargs) self.assertNotIn('target_type', kwargs) kwargs = get_single_crud_kwargs(ANY, ANY, exhibit) self.assertNotIn('role', kwargs) self.assertNotIn('agent_id', kwargs) self.assertNotIn('agent_type', kwargs) self.assertEqual(kwargs['target_id'], exhibit.id) self.assertIn('target_type', kwargs) kwargs = get_single_crud_kwargs(role, exhibit, exhibit) self.assertEqual(kwargs['role'], role) self.assertEqual(kwargs['agent_id'], exhibit.id) self.assertEqual(kwargs['target_id'], exhibit.id) self.assertIn('agent_type', kwargs) self.assertIn('target_type', kwargs)
def remove_perm(*args, **kwargs): """ Removes all Permissions matching the arguments. Accepts role, agent, and target kwargs. """ query_kwargs = get_single_crud_kwargs(*args, **kwargs) Permission.objects.filter(**query_kwargs).delete()
def add_perm(role, agent, target): """ Adds a single Permission matching the arguments. Accepts role, agent, and target kwargs. If the Permission already exists, it will retrieve it instead. """ # Make sure we're not adding bad data validate_roles_with_targets(role, target) # If it already exists, this is a duplicate, so ignore it. query_kwargs = get_single_crud_kwargs(role, agent, target) return Permission.objects.get_or_create(**query_kwargs)[0]