Merge pull request #3447 from beeankha/node_activity_stream

WFJT Node Activity Stream Bug Fix

Reviewed-by: https://github.com/softwarefactory-project-zuul[bot]
This commit is contained in:
softwarefactory-project-zuul[bot] 2019-03-25 19:23:27 +00:00 committed by GitHub
commit ace459cf70
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 6 deletions

View File

@ -4021,7 +4021,7 @@ class WorkflowJobTemplateNodeDetailSerializer(WorkflowJobTemplateNodeSerializer)
Influence the api browser sample data to not include workflow_job_template
when editing a WorkflowNode.
Note: I was not able to accomplish this trough the use of extra_kwargs.
Note: I was not able to accomplish this through the use of extra_kwargs.
Maybe something to do with workflow_job_template being a relational field?
'''
def build_relational_field(self, field_name, relation_info):
@ -5073,6 +5073,17 @@ class ActivityStreamSerializer(BaseSerializer):
if fval is not None:
job_template_item[field] = fval
summary_fields['job_template'].append(job_template_item)
if fk == 'workflow_job_template_node':
summary_fields['workflow_job_template'] = []
workflow_job_template_item = {}
workflow_job_template_fields = SUMMARIZABLE_FK_FIELDS['workflow_job_template']
workflow_job_template = getattr(thisItem, 'workflow_job_template', None)
if workflow_job_template is not None:
for field in workflow_job_template_fields:
fval = getattr(workflow_job_template, field, None)
if fval is not None:
workflow_job_template_item[field] = fval
summary_fields['workflow_job_template'].append(workflow_job_template_item)
if fk == 'schedule':
unified_job_template = getattr(thisItem, 'unified_job_template', None)
if unified_job_template is not None:

View File

@ -10,8 +10,10 @@ export default function BuildAnchor($log, $filter) {
// catch-all case to avoid generating urls if a resource has been deleted
// if a resource still exists, it'll be serialized in the activity's summary_fields
if (!activity.summary_fields[resource]){
console.log(activity);
throw {name : 'ResourceDeleted', message: 'The referenced resource no longer exists'};
}
let name;
switch (resource) {
case 'custom_inventory_script':
url += 'inventory_scripts/' + obj.id + '/';
@ -75,6 +77,10 @@ export default function BuildAnchor($log, $filter) {
case 'workflow_job_template':
url += `templates/workflow_job_template/${obj.id}`;
break;
case 'workflow_job_template_node':
url += `templates/workflow_job_template/${activity.summary_fields.workflow_job_template[0].id}`;
name = activity.summary_fields.workflow_job_template[0].name;
break;
case 'workflow_job':
url += `workflows/${obj.id}`;
break;
@ -92,7 +98,7 @@ export default function BuildAnchor($log, $filter) {
url += resource + 's/' + obj.id + '/';
}
const name = $filter('sanitize')(obj.name || obj.username);
name = $filter('sanitize')(name || obj.name || obj.username);
if (url) {
return ` <a href=\"${url}\">&nbsp;${name}&nbsp;</a> `;

View File

@ -85,8 +85,12 @@ export default function BuildDescription(BuildAnchor, $log, i18n) {
'from ' + activity.object1 + BuildAnchor(activity.summary_fields.group[0], activity.object1, activity);
}
else {
activity.description += activity.object2 + BuildAnchor(activity.summary_fields[activity.object2][0], activity.object2, activity) +
'from ' + activity.object1 + BuildAnchor(activity.summary_fields[activity.object1][0], activity.object1, activity);
if (activity.object1 === 'workflow_job_template_node' && activity.object2 === 'workflow_job_template_node') {
activity.description += 'two nodes on workflow' + BuildAnchor(activity.summary_fields[activity.object1[0]], activity.object1, activity);
} else {
activity.description += activity.object2 + BuildAnchor(activity.summary_fields[activity.object2][0], activity.object2, activity) +
'from ' + activity.object1 + BuildAnchor(activity.summary_fields[activity.object1][0], activity.object1, activity);
}
}
break;
// expected outcome "associated <object2> to <object1>"
@ -97,8 +101,12 @@ export default function BuildDescription(BuildAnchor, $log, i18n) {
'to ' + activity.object2 + BuildAnchor(activity.summary_fields.group[1], activity.object2, activity);
}
else {
activity.description += activity.object1 + BuildAnchor(activity.summary_fields[activity.object1][0], activity.object1, activity) +
'to ' + activity.object2 + BuildAnchor(activity.summary_fields[activity.object2][0], activity.object2, activity);
if (activity.object1 === 'workflow_job_template_node' && activity.object2 === 'workflow_job_template_node') {
activity.description += 'two nodes on workflow' + BuildAnchor(activity.summary_fields[activity.object1[0]], activity.object1, activity);
} else {
activity.description += activity.object1 + BuildAnchor(activity.summary_fields[activity.object1][0], activity.object1, activity) +
'to ' + activity.object2 + BuildAnchor(activity.summary_fields[activity.object2][0], activity.object2, activity);
}
}
break;
case 'delete':