Implement smart recursive deleting on certain inventory resources

This commit is contained in:
Matthew Jones
2014-05-08 15:49:49 -04:00
parent 78b5378b57
commit 79ef9e5ed5
4 changed files with 56 additions and 1 deletions

View File

@@ -30,7 +30,7 @@ from awx.main.utils import *
__all__ = ['APIView', 'GenericAPIView', 'ListAPIView', 'SimpleListAPIView',
'ListCreateAPIView', 'SubListAPIView', 'SubListCreateAPIView',
'RetrieveAPIView', 'RetrieveUpdateAPIView',
'RetrieveDestroyAPIView', 'RetrieveUpdateDestroyAPIView']
'RetrieveDestroyAPIView', 'RetrieveUpdateDestroyAPIView', 'DestroyAPIView']
logger = logging.getLogger('awx.api.generics')
@@ -466,3 +466,6 @@ class RetrieveDestroyAPIView(RetrieveAPIView, generics.RetrieveDestroyAPIView):
class RetrieveUpdateDestroyAPIView(RetrieveUpdateAPIView, RetrieveDestroyAPIView):
pass
class DestroyAPIView(GenericAPIView, generics.DestroyAPIView):
pass

View File

@@ -65,6 +65,7 @@ inventory_urls = patterns('awx.api.views',
url(r'^(?P<pk>[0-9]+)/$', 'inventory_detail'),
url(r'^(?P<pk>[0-9]+)/hosts/$', 'inventory_hosts_list'),
url(r'^(?P<pk>[0-9]+)/groups/$', 'inventory_groups_list'),
url(r'^(?P<pk>[0-9]+)/groups/(?P<group_pk>[0-9]+)/$', 'inventory_root_group_remove'),
url(r'^(?P<pk>[0-9]+)/root_groups/$', 'inventory_root_groups_list'),
url(r'^(?P<pk>[0-9]+)/variable_data/$', 'inventory_variable_data'),
url(r'^(?P<pk>[0-9]+)/script/$', 'inventory_script_view'),
@@ -89,6 +90,7 @@ group_urls = patterns('awx.api.views',
url(r'^$', 'group_list'),
url(r'^(?P<pk>[0-9]+)/$', 'group_detail'),
url(r'^(?P<pk>[0-9]+)/children/$', 'group_children_list'),
url(r'^(?P<pk>[0-9]+)/children/(?P<subgroup_pk>[0-9]+)/$', 'group_children_remove'),
url(r'^(?P<pk>[0-9]+)/hosts/$', 'group_hosts_list'),
url(r'^(?P<pk>[0-9]+)/all_hosts/$', 'group_all_hosts_list'),
url(r'^(?P<pk>[0-9]+)/variable_data/$', 'group_variable_data'),

View File

@@ -788,6 +788,18 @@ class GroupChildrenList(SubListCreateAPIView):
return Response(status=status.HTTP_204_NO_CONTENT)
class GroupChildrenRemove(DestroyAPIView):
model = Group
serializer_class = GroupSerializer
view_name = 'Remove a subgroup recursively'
def destroy(self, request, *args, **kwargs):
parent_group = self.get_object()
group = Group.objects.get(id=kwargs['subgroup_pk'])
group.mark_inactive_recursive(parent_group)
return Response()
class GroupPotentialChildrenList(SubListAPIView):
model = Group
@@ -863,6 +875,17 @@ class InventoryGroupsList(SubListCreateAPIView):
relationship = 'groups'
parent_key = 'inventory'
class InventoryRootGroupRemove(DestroyAPIView):
model = Group
serializer_class = GroupSerializer
view_name = 'Inventory Group Subgroup'
def destroy(self, request, *args, **kwargs):
group = Group.objects.get(id=kwargs['group_pk'])
group.mark_inactive_recursive()
return Response()
class InventoryRootGroupsList(SubListCreateAPIView):
model = Group