11# -*- coding: utf-8 -*-
22from flask import jsonify , url_for
3+ from werkzeug .routing import BuildError
34import marshmallow
45
56from .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