mirror of
https://github.com/ansible/awx.git
synced 2026-04-08 03:29:21 -02:30
Starting to defer some business logic to the model classes and out of the views.
This commit is contained in:
@@ -43,3 +43,8 @@ class BaseDetail(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
obj.save()
|
obj.save()
|
||||||
return HttpResponse(status=204)
|
return HttpResponse(status=204)
|
||||||
|
|
||||||
|
def delete_permissions_check(self, request, obj):
|
||||||
|
raise exceptions.NotImplementedError()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,12 @@ class CommonModel(models.Model):
|
|||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return unicode(self.name)
|
return unicode(self.name)
|
||||||
|
|
||||||
def can_user_administrate(self, user):
|
def can_user_administrate(cls, user):
|
||||||
raise exceptions.NotImplementedError()
|
raise exceptions.NotImplementedError()
|
||||||
|
|
||||||
|
def can_user_delete(cls, user, obj):
|
||||||
|
return user in obj.admins.all()
|
||||||
|
|
||||||
|
|
||||||
class Tag(models.Model):
|
class Tag(models.Model):
|
||||||
'''
|
'''
|
||||||
@@ -81,6 +85,9 @@ class Organization(CommonModel):
|
|||||||
import lib.urls
|
import lib.urls
|
||||||
return reverse(lib.urls.views_OrganizationsDetail, args=(self.pk,))
|
return reverse(lib.urls.views_OrganizationsDetail, args=(self.pk,))
|
||||||
|
|
||||||
|
def can_user_delete(cls, user, obj):
|
||||||
|
return user in obj.admins.all()
|
||||||
|
|
||||||
class Inventory(CommonModel):
|
class Inventory(CommonModel):
|
||||||
'''
|
'''
|
||||||
an inventory source contains lists and hosts.
|
an inventory source contains lists and hosts.
|
||||||
|
|||||||
@@ -40,11 +40,8 @@ class OrganizationsDetail(BaseDetail):
|
|||||||
serializer_class = OrganizationSerializer
|
serializer_class = OrganizationSerializer
|
||||||
permission_classes = (CustomRbac,)
|
permission_classes = (CustomRbac,)
|
||||||
|
|
||||||
# FIXME: use this for the audit trail hook, ideally in base class.
|
|
||||||
#def pre_save(self, obj):
|
|
||||||
# obj.owner = self.request.user
|
|
||||||
|
|
||||||
def item_permissions_check(self, request, obj):
|
def item_permissions_check(self, request, obj):
|
||||||
|
|
||||||
is_admin = request.user in obj.admins.all()
|
is_admin = request.user in obj.admins.all()
|
||||||
is_user = request.user in obj.users.all()
|
is_user = request.user in obj.users.all()
|
||||||
|
|
||||||
@@ -55,6 +52,7 @@ class OrganizationsDetail(BaseDetail):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def delete_permissions_check(self, request, obj):
|
def delete_permissions_check(self, request, obj):
|
||||||
|
|
||||||
return request.user in obj.admins.all()
|
return request.user in obj.admins.all()
|
||||||
|
|
||||||
class OrganizationsAuditTrailList(BaseList):
|
class OrganizationsAuditTrailList(BaseList):
|
||||||
|
|||||||
Reference in New Issue
Block a user