Skip to content

Commit 3e89850

Browse files
author
Joel Collins
committed
Handle missing endpoint when building URLs
1 parent 841d392 commit 3e89850

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

labthings/server/schema.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# -*- coding: utf-8 -*-
22
from flask import jsonify, url_for
3+
from werkzeug.routing import BuildError
34
import marshmallow
45

56
from .names import TASK_ENDPOINT, TASK_LIST_ENDPOINT, EXTENSION_LIST_ENDPOINT
@@ -105,9 +106,13 @@ class TaskSchema(Schema):
105106

106107
@marshmallow.pre_dump
107108
def generate_links(self, data, **kwargs):
109+
try:
110+
url = url_for(TASK_ENDPOINT, task_id=data.id, _external=True)
111+
except BuildError:
112+
url = None
108113
data.links = {
109114
"self": {
110-
"href": url_for(TASK_ENDPOINT, task_id=data.id, _external=True),
115+
"href": url,
111116
"mimetype": "application/json",
112117
**description_from_view(view_class_from_endpoint(TASK_ENDPOINT)),
113118
}
@@ -130,9 +135,14 @@ def generate_links(self, data, **kwargs):
130135
for view_id, view_data in data.views.items():
131136
view_cls = view_data["view"]
132137
view_rule = view_data["rule"]
138+
# Try to build a URL
139+
try:
140+
url = url_for(EXTENSION_LIST_ENDPOINT, _external=True) + view_rule
141+
except BuildError:
142+
url = None
133143
# Make links dictionary if it doesn't yet exist
134144
d[view_id] = {
135-
"href": url_for(EXTENSION_LIST_ENDPOINT, _external=True) + view_rule,
145+
"href": url,
136146
**description_from_view(view_cls),
137147
}
138148

0 commit comments

Comments
 (0)