Skip to content

Commit 6670bef

Browse files
authored
Merge pull request #1117 from xcube-dev/forman-1116-suppress_no_ext_config_error
Suppress no ext config error
2 parents c0ada5a + 340cc48 commit 6670bef

File tree

4 files changed

+76
-7
lines changed

4 files changed

+76
-7
lines changed

CHANGES.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## Changes in 1.8.2 (in development)
2+
3+
* No longer logging a `TypeError` if xcube server's
4+
`GET viewer/ext/contributions` is called without any
5+
viewer extensions configured. (#1116)
6+
17
## Changes in 1.8.1
28

39
### Fixes

test/webapi/viewer/test_routes.py

+45
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,51 @@ def test_viewer_ext_callback(self):
137137
self.assertEqual({"result": expected_callback_result}, result)
138138

139139

140+
class ViewerExtRoutesWithDefaultConfigTest(RoutesTestCase):
141+
142+
def setUp(self) -> None:
143+
super().setUp()
144+
self.maxDiff = None
145+
146+
def test_viewer_ext_contributions(self):
147+
response = self.fetch("/viewer/ext/contributions")
148+
self.assertResourceNotFoundResponse(response)
149+
150+
def test_viewer_ext_layout(self):
151+
response = self.fetch(
152+
"/viewer/ext/layout/panels/0",
153+
method="POST",
154+
body={
155+
"inputValues": [
156+
"", # dataset_id
157+
]
158+
},
159+
)
160+
self.assertResourceNotFoundResponse(response)
161+
162+
def test_viewer_ext_callback(self):
163+
response = self.fetch(
164+
"/viewer/ext/callback",
165+
method="POST",
166+
body={
167+
"callbackRequests": [
168+
{
169+
"contribPoint": "panels",
170+
"contribIndex": 0,
171+
"callbackIndex": 0,
172+
"inputValues": [
173+
"", # dataset_id
174+
True, # opaque
175+
1, # color
176+
"", # info_text
177+
],
178+
}
179+
]
180+
},
181+
)
182+
self.assertResourceNotFoundResponse(response)
183+
184+
140185
expected_callback_result = [
141186
{
142187
"contribIndex": 0,

xcube/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
# Permissions are hereby granted under the terms of the MIT License:
33
# https://opensource.org/licenses/MIT.
44

5-
version = "1.8.1"
5+
version = "1.8.2.dev0"

xcube/webapi/viewer/routes.py

+24-6
Original file line numberDiff line numberDiff line change
@@ -163,17 +163,31 @@ def new_key(self, length: int = 8) -> str:
163163

164164
class ViewerExtHandler(ApiHandler[ViewerContext]):
165165
def do_get_contributions(self):
166-
self._write_response(get_contributions(self.ctx.ext_ctx))
166+
if self.ctx.ext_ctx is None:
167+
self._write_no_ext_status()
168+
else:
169+
self._write_response(get_contributions(self.ctx.ext_ctx))
167170

168171
def do_get_layout(self, contrib_point: str, contrib_index: str):
169-
self._write_response(
170-
get_layout(
171-
self.ctx.ext_ctx, contrib_point, int(contrib_index), self.request.json
172+
if self.ctx.ext_ctx is None:
173+
self._write_no_ext_status()
174+
else:
175+
self._write_response(
176+
get_layout(
177+
self.ctx.ext_ctx,
178+
contrib_point,
179+
int(contrib_index),
180+
self.request.json,
181+
)
172182
)
173-
)
174183

175184
def do_get_callback_results(self):
176-
self._write_response(get_callback_results(self.ctx.ext_ctx, self.request.json))
185+
if self.ctx.ext_ctx is None:
186+
self._write_no_ext_status()
187+
else:
188+
self._write_response(
189+
get_callback_results(self.ctx.ext_ctx, self.request.json)
190+
)
177191

178192
def _write_response(self, response: ExtResponse):
179193
self.response.set_header("Content-Type", "text/json")
@@ -187,6 +201,10 @@ def _write_response(self, response: ExtResponse):
187201
{"error": {"status": response.status, "message": response.reason}}
188202
)
189203

204+
def _write_no_ext_status(self):
205+
self.response.set_status(404, "No extensions configured")
206+
self.response.finish()
207+
190208

191209
@api.route("/viewer/ext/contributions")
192210
class ViewerExtContributionsHandler(ViewerExtHandler):

0 commit comments

Comments
 (0)