Moving more logic into the models, more view cleanup

This commit is contained in:
Michael DeHaan 2013-03-22 15:44:32 -04:00
parent d338794ec2
commit 2c02dc73a0
2 changed files with 22 additions and 1 deletions

View File

@ -46,5 +46,13 @@ class BaseDetail(generics.RetrieveUpdateDestroyAPIView):
def delete_permissions_check(self, request, obj):
raise exceptions.NotImplementedError()
def item_permissions_check(self, request, obj):
if request.method == 'GET':
return self.__class__.model.can_user_read(request.user, obj)
elif request.method in [ 'PUT' ]:
return self.__class__.model.can_user_administrate(request.user, obj)
return False

View File

@ -35,7 +35,10 @@ class CommonModel(models.Model):
raise exceptions.NotImplementedError()
def can_user_delete(cls, user, obj):
return user in obj.admins.all()
raise exceptions.NotImplementedError
def can_user_access(cls, user, obj):
raise exceptions.NotImplementedError()
class Tag(models.Model):
@ -88,6 +91,16 @@ class Organization(CommonModel):
def can_user_delete(cls, user, obj):
return user in obj.admins.all()
def can_user_administrate(cls, user, obj):
return request.user in obj.admins.all()
def can_user_access(cls, user, obj):
return self.can_user_administrate(user,obj) or request.user in obj.users.all()
def can_user_delete(cls, user, obj):
return self.can_user_administrate(user, obj)
class Inventory(CommonModel):
'''
an inventory source contains lists and hosts.