mirror of
https://github.com/ansible/awx.git
synced 2026-03-04 02:01:01 -03:30
Work to complete AC-673, mass refactoring of the activity stream. Some work towards AC-664/662 but will complete on those issues. This also fixes issue AC-743 (Adding help text for OPTIONS requests) and AC-675 (updates where active changes to False will now be treated as deletes)
This commit is contained in:
108
awx/api/views.py
108
awx/api/views.py
@@ -301,6 +301,13 @@ class OrganizationTeamsList(SubListCreateAPIView):
|
||||
relationship = 'teams'
|
||||
parent_key = 'organization'
|
||||
|
||||
class OrganizationActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = Organization
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
class TeamList(ListCreateAPIView):
|
||||
|
||||
model = Team
|
||||
@@ -352,6 +359,13 @@ class TeamCredentialsList(SubListCreateAPIView):
|
||||
relationship = 'credentials'
|
||||
parent_key = 'team'
|
||||
|
||||
class TeamActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = Team
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
class ProjectList(ListCreateAPIView):
|
||||
|
||||
model = Project
|
||||
@@ -390,6 +404,13 @@ class ProjectTeamsList(SubListCreateAPIView):
|
||||
parent_model = Project
|
||||
relationship = 'teams'
|
||||
|
||||
class ProjectActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = Project
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
class ProjectUpdatesList(SubListAPIView):
|
||||
|
||||
model = ProjectUpdate
|
||||
@@ -513,6 +534,20 @@ class UserAdminOfOrganizationsList(SubListAPIView):
|
||||
parent_model = User
|
||||
relationship = 'admin_of_organizations'
|
||||
|
||||
class UserActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = User
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
def get_queryset(self):
|
||||
parent = self.get_parent_object()
|
||||
self.check_parent_access(parent)
|
||||
qs = self.request.user.get_queryset(self.model)
|
||||
return qs.filter(Q(actor=parent) | Q(user__in=[parent]))
|
||||
|
||||
|
||||
class UserDetail(RetrieveUpdateDestroyAPIView):
|
||||
|
||||
model = User
|
||||
@@ -545,6 +580,13 @@ class CredentialDetail(RetrieveUpdateDestroyAPIView):
|
||||
model = Credential
|
||||
serializer_class = CredentialSerializer
|
||||
|
||||
class CredentialActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = Credential
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
class PermissionDetail(RetrieveUpdateDestroyAPIView):
|
||||
|
||||
model = Permission
|
||||
@@ -560,6 +602,13 @@ class InventoryDetail(RetrieveUpdateDestroyAPIView):
|
||||
model = Inventory
|
||||
serializer_class = InventorySerializer
|
||||
|
||||
class InventoryActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = Inventory
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
class HostList(ListCreateAPIView):
|
||||
|
||||
model = Host
|
||||
@@ -601,6 +650,13 @@ class HostAllGroupsList(SubListAPIView):
|
||||
sublist_qs = parent.all_groups.distinct()
|
||||
return qs & sublist_qs
|
||||
|
||||
class HostActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = Host
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
class GroupList(ListCreateAPIView):
|
||||
|
||||
model = Group
|
||||
@@ -679,6 +735,14 @@ class GroupAllHostsList(SubListAPIView):
|
||||
sublist_qs = parent.all_hosts.distinct()
|
||||
return qs & sublist_qs
|
||||
|
||||
class GroupActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = Group
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
|
||||
class GroupDetail(RetrieveUpdateDestroyAPIView):
|
||||
|
||||
model = Group
|
||||
@@ -829,6 +893,14 @@ class InventorySourceDetail(RetrieveUpdateAPIView):
|
||||
serializer_class = InventorySourceSerializer
|
||||
new_in_14 = True
|
||||
|
||||
class InventorySourceActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = InventorySource
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
|
||||
class InventorySourceUpdatesList(SubListAPIView):
|
||||
|
||||
model = InventoryUpdate
|
||||
@@ -899,6 +971,14 @@ class JobTemplateDetail(RetrieveUpdateDestroyAPIView):
|
||||
model = JobTemplate
|
||||
serializer_class = JobTemplateSerializer
|
||||
|
||||
class JobTemplateActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = JobTemplate
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
|
||||
class JobTemplateCallback(GenericAPIView):
|
||||
|
||||
model = JobTemplate
|
||||
@@ -1031,6 +1111,13 @@ class JobDetail(RetrieveUpdateDestroyAPIView):
|
||||
return self.http_method_not_allowed(request, *args, **kwargs)
|
||||
return super(JobDetail, self).update(request, *args, **kwargs)
|
||||
|
||||
class JobActivityStreamList(SubListAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
parent_model = Job
|
||||
relationship = 'activitystream_set'
|
||||
|
||||
class JobStart(GenericAPIView):
|
||||
|
||||
model = Job
|
||||
@@ -1171,27 +1258,6 @@ class ActivityStreamList(SimpleListAPIView):
|
||||
model = ActivityStream
|
||||
serializer_class = ActivityStreamSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
initial_qs = super(ActivityStreamList, self).get_queryset()
|
||||
if not self.request.user.is_superuser:
|
||||
return initial_qs.none()
|
||||
all_qs = Q()
|
||||
all_obj1_types = [x.object1_type for x in ActivityStream.objects.order_by('object1_type').distinct('object1_type')]
|
||||
all_obj2_types = [x.object2_type for x in ActivityStream.objects.order_by('object2_type').distinct('object2_type')]
|
||||
all_types = list(set(all_obj1_types + all_obj2_types))
|
||||
for this_type in all_types:
|
||||
try:
|
||||
type_qs = get_user_queryset(self.request.user, eval(this_type))
|
||||
ids = [t.id for t in type_qs]
|
||||
if len(ids) > 0:
|
||||
all_qs = all_qs | (Q(object1_type=this_type) & Q(object1_id__in=ids))
|
||||
all_qs = all_qs | (Q(object2_type=this_type) & Q(object2_id__in=ids))
|
||||
except Exception, e:
|
||||
logger.warn("Error: " + str(e))
|
||||
continue
|
||||
initial_qs = initial_qs.filter(all_qs)
|
||||
return initial_qs
|
||||
|
||||
class ActivityStreamDetail(RetrieveAPIView):
|
||||
|
||||
model = ActivityStream
|
||||
|
||||
Reference in New Issue
Block a user