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
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 Influence the api browser sample data to not include workflow_job_template
when editing a WorkflowNode. 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? Maybe something to do with workflow_job_template being a relational field?
''' '''
def build_relational_field(self, field_name, relation_info): def build_relational_field(self, field_name, relation_info):
@@ -5073,6 +5073,17 @@ class ActivityStreamSerializer(BaseSerializer):
if fval is not None: if fval is not None:
job_template_item[field] = fval job_template_item[field] = fval
summary_fields['job_template'].append(job_template_item) 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': if fk == 'schedule':
unified_job_template = getattr(thisItem, 'unified_job_template', None) unified_job_template = getattr(thisItem, 'unified_job_template', None)
if unified_job_template is not 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 // 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 a resource still exists, it'll be serialized in the activity's summary_fields
if (!activity.summary_fields[resource]){ if (!activity.summary_fields[resource]){
console.log(activity);
throw {name : 'ResourceDeleted', message: 'The referenced resource no longer exists'}; throw {name : 'ResourceDeleted', message: 'The referenced resource no longer exists'};
} }
let name;
switch (resource) { switch (resource) {
case 'custom_inventory_script': case 'custom_inventory_script':
url += 'inventory_scripts/' + obj.id + '/'; url += 'inventory_scripts/' + obj.id + '/';
@@ -75,6 +77,10 @@ export default function BuildAnchor($log, $filter) {
case 'workflow_job_template': case 'workflow_job_template':
url += `templates/workflow_job_template/${obj.id}`; url += `templates/workflow_job_template/${obj.id}`;
break; 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': case 'workflow_job':
url += `workflows/${obj.id}`; url += `workflows/${obj.id}`;
break; break;
@@ -92,7 +98,7 @@ export default function BuildAnchor($log, $filter) {
url += resource + 's/' + obj.id + '/'; url += resource + 's/' + obj.id + '/';
} }
const name = $filter('sanitize')(obj.name || obj.username); name = $filter('sanitize')(name || obj.name || obj.username);
if (url) { if (url) {
return ` <a href=\"${url}\">&nbsp;${name}&nbsp;</a> `; 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); 'from ' + activity.object1 + BuildAnchor(activity.summary_fields.group[0], activity.object1, activity);
} }
else { else {
activity.description += 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') {
'from ' + activity.object1 + BuildAnchor(activity.summary_fields[activity.object1][0], activity.object1, activity); 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; break;
// expected outcome "associated <object2> to <object1>" // 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); 'to ' + activity.object2 + BuildAnchor(activity.summary_fields.group[1], activity.object2, activity);
} }
else { else {
activity.description += 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') {
'to ' + activity.object2 + BuildAnchor(activity.summary_fields[activity.object2][0], activity.object2, activity); 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; break;
case 'delete': case 'delete':