コード例 #1
0
    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)
コード例 #2
0
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()
コード例 #3
0
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]