Gracefully handle missing tasks.

This commit is contained in:
2016-10-21 14:39:47 +02:00
parent 714430203d
commit 6abc29061a

View File

@@ -1,3 +1,4 @@
import json
import logging import logging
from flask import Blueprint, render_template, request, current_app from flask import Blueprint, render_template, request, current_app
@@ -6,6 +7,7 @@ import flask_login
import werkzeug.exceptions as wz_exceptions import werkzeug.exceptions as wz_exceptions
import pillarsdk import pillarsdk
import pillarsdk.exceptions as sdk_exceptions
from pillar.web.system_util import pillar_api from pillar.web.system_util import pillar_api
import pillar.api.utils import pillar.api.utils
import pillar.web.subquery import pillar.web.subquery
@@ -63,7 +65,22 @@ def view_task(project, attract_props, task_id):
raise wz_exceptions.Forbidden() raise wz_exceptions.Forbidden()
api = pillar_api() api = pillar_api()
try:
task = pillarsdk.Node.find(task_id, api=api) task = pillarsdk.Node.find(task_id, api=api)
except sdk_exceptions.ResourceNotFound as ex:
content = getattr(ex, 'content', None)
if content:
deleted_task = json.loads(content)
if deleted_task and deleted_task.get('_deleted', False):
# This task used to exist, but doesn't any more. Let the user know.
task_name = deleted_task.get('name')
if task_name:
description = u'Task "%s" was deleted.' % task_name
else:
description = u'This task was deleted.'
return render_template('errors/404_embed.html', description=description), 404
raise
node_type = project.get_node_type(node_type_task['name']) node_type = project.get_node_type(node_type_task['name'])
# Fetch project users so that we can assign them tasks # Fetch project users so that we can assign them tasks