def test_permission_object_exceptions(datadir, setup): # noqa with pytest.raises(PermissionObjectException): permissioned_model( CheckModel3, perm_type='check3', path_fields=('container', 'pk'), actions=[('check3.list', {'permissions_object': 'not-there'}), ('check3.create', {'permissions_object': 'container'}), 'check3.detail', 'check3.delete'] ) with pytest.raises(PermissionObjectException): permissioned_model( CheckModel3, perm_type='check3', path_fields=('container', 'pk'), actions=[('check3.list', {'permissions_object': 'name'}), ('check3.create', {'permissions_object': 'container'}), 'check3.detail', 'check3.delete'] ) with pytest.raises(DecoratorException): class Dummy(models.Model): pass permissioned_model( Dummy, perm_type='dummy', path_fields=('name',) ) with pytest.raises(DecoratorException): class Dummy: pass permissioned_model( Dummy, perm_type='dummy', path_fields=('name',), actions=['dummy.list'] )
def __str__(self): return self.name class CheckModel2(models.Model): name = models.CharField(max_length=100) container = models.ForeignKey(CheckModel1) def __str__(self): return self.name permissioned_model( CheckModel2, perm_type='check2', path_fields=('container', 'pk'), actions=[('check2.list', {'permissions_object': 'container'}), ('check2.create', {'permissions_object': 'container'}), 'check2.detail', 'check2.delete'] ) class CheckModel3(models.Model): name = models.CharField(max_length=100) container = models.ForeignKey(CheckModel1) def __str__(self): return self.name @permissioned_model class CheckModel4(models.Model):
'permissions_object': 'project'}), ('parcel.detail', {'description': "View details of a parcel"}), ('parcel.edit', {'description': "Update existing parcels"}), ('parcel.delete', {'description': "Delete parcels"}) ] def get_absolute_url(self): return reverse('parcel-detail', kwargs={'pk': self.pk}) permissioned_model( Policy, perm_type='policy', path_fields=['name'], actions=[ ('policy.list', {'description': "Can list existing policies", 'permissions_object': None}), ('policy.create', {'description': "Can create policies", 'permissions_object': None}), ('policy.detail', {'description': "Can view details of a policy"}), ('policy.edit', {'description': "Can update existing policies"}), ('policy.delete', {'description': "Can delete policies"}) ] ) permissioned_model( User, perm_type='user', path_fields=['username'], actions=[ ('user.list', {'permissions_object': None}), ('user.create', {'permissions_object': None}), 'user.detail', 'user.edit', 'user.delete' ] )