Merge pull request #4912 from AlanCoding/as_mods

WFJT activity stream for org admins + other polishing
This commit is contained in:
Alan Rominger
2017-01-27 11:17:34 -05:00
committed by GitHub
4 changed files with 31 additions and 10 deletions

View File

@@ -83,6 +83,8 @@ SUMMARIZABLE_FK_FIELDS = {
'network_credential': DEFAULT_SUMMARY_FIELDS + ('kind', 'net'),
'job': DEFAULT_SUMMARY_FIELDS + ('status', 'failed', 'elapsed'),
'job_template': DEFAULT_SUMMARY_FIELDS,
'workflow_job_template': DEFAULT_SUMMARY_FIELDS,
'workflow_job': DEFAULT_SUMMARY_FIELDS,
'schedule': DEFAULT_SUMMARY_FIELDS + ('next_run',),
'unified_job_template': DEFAULT_SUMMARY_FIELDS + ('unified_job_type',),
'last_job': DEFAULT_SUMMARY_FIELDS + ('finished', 'status', 'failed', 'license_error'),
@@ -3000,10 +3002,14 @@ class ActivityStreamSerializer(BaseSerializer):
for fk, __ in SUMMARIZABLE_FK_FIELDS.items():
if not hasattr(obj, fk):
continue
allm2m = getattr(obj, fk).distinct()
allm2m = getattr(obj, fk).all()
if getattr(obj, fk).exists():
rel[fk] = []
id_list = []
for thisItem in allm2m:
if getattr(thisItem, 'id', None) in id_list:
continue
id_list.append(getattr(thisItem, 'id', None))
if fk == 'custom_inventory_script':
rel[fk].append(reverse('api:inventory_script_detail', args=(thisItem.id,)))
else:
@@ -3019,7 +3025,7 @@ class ActivityStreamSerializer(BaseSerializer):
try:
if not hasattr(obj, fk):
continue
allm2m = getattr(obj, fk).distinct()
allm2m = getattr(obj, fk).all()
if getattr(obj, fk).exists():
summary_fields[fk] = []
for thisItem in allm2m:
@@ -3048,6 +3054,9 @@ class ActivityStreamSerializer(BaseSerializer):
thisItemDict[field] = fval
if fk == 'group':
thisItemDict['inventory_id'] = getattr(thisItem, 'inventory_id', None)
if thisItemDict.get('id', None):
if thisItemDict.get('id', None) in [obj_dict.get('id', None) for obj_dict in summary_fields[fk]]:
continue
summary_fields[fk].append(thisItemDict)
except ObjectDoesNotExist:
pass

View File

@@ -3102,6 +3102,13 @@ class WorkflowJobTemplateActivityStreamList(WorkflowsEnforcementMixin, ActivityS
relationship = 'activitystream_set'
new_in_310 = True
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(workflow_job_template=parent) |
Q(workflow_job_template_node__workflow_job_template=parent))
class WorkflowJobList(WorkflowsEnforcementMixin, ListCreateAPIView):