Skip to content

Commit d4e43d6

Browse files
committed
Fix broken tests.
1 parent 1f9a9f3 commit d4e43d6

7 files changed

Lines changed: 104 additions & 38 deletions

File tree

src/palace/manager/api/admin/controller/catalog_services.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
UpdatedLibrarySettingsTuple,
88
)
99
from palace.manager.api.admin.form_data import ProcessFormData
10-
from palace.manager.api.admin.problem_details import MULTIPLE_SERVICES_FOR_LIBRARY
10+
from palace.manager.api.admin.problem_details import (
11+
MISSING_SERVICE,
12+
MULTIPLE_SERVICES_FOR_LIBRARY,
13+
)
1114
from palace.manager.integration.catalog.marc.exporter import MarcExporter
1215
from palace.manager.integration.goals import Goals
1316
from palace.manager.integration.settings import BaseSettings
@@ -102,6 +105,10 @@ def process_post(self) -> Response | ProblemDetail:
102105

103106
return Response(str(catalog_service.id), response_code)
104107

105-
def process_delete(self, service_id: int) -> Response:
108+
def process_delete(self, service_id: int | str) -> Response | ProblemDetail:
106109
self.require_system_admin()
107-
return self.delete_service(service_id)
110+
try:
111+
sid = int(service_id) if isinstance(service_id, str) else service_id
112+
except ValueError:
113+
return MISSING_SERVICE
114+
return self.delete_service(sid)

src/palace/manager/api/admin/controller/custom_lists.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,8 +313,12 @@ def url_fn(after: int) -> str:
313313
return url_fn
314314

315315
def custom_list(
316-
self, list_id: int
316+
self, list_id: int | str
317317
) -> Response | dict[str, Any] | ProblemDetail | None:
318+
try:
319+
list_id = int(list_id) if isinstance(list_id, str) else list_id
320+
except ValueError:
321+
return MISSING_CUSTOM_LIST
318322
library = get_request_library()
319323
self.require_librarian(library)
320324
data_source = DataSource.lookup(self._db, DataSource.LIBRARY_STAFF)
@@ -398,9 +402,15 @@ def custom_list(
398402
return None
399403

400404
def share_locally(
401-
self, customlist_id: int
405+
self, customlist_id: int | str
402406
) -> ProblemDetail | dict[str, int] | Response:
403407
"""Share this customlist with all libraries on this local CM"""
408+
try:
409+
customlist_id = (
410+
int(customlist_id) if isinstance(customlist_id, str) else customlist_id
411+
)
412+
except ValueError:
413+
return MISSING_CUSTOM_LIST
404414
if not customlist_id:
405415
return INVALID_INPUT
406416
customlist = get_one(self._db, CustomList, id=customlist_id)

src/palace/manager/api/admin/controller/discovery_services.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
IntegrationSettingsController,
88
)
99
from palace.manager.api.admin.form_data import ProcessFormData
10-
from palace.manager.api.admin.problem_details import INTEGRATION_URL_ALREADY_IN_USE
10+
from palace.manager.api.admin.problem_details import (
11+
INTEGRATION_URL_ALREADY_IN_USE,
12+
MISSING_SERVICE,
13+
)
1114
from palace.manager.integration.discovery.opds_registration import (
1215
OpdsRegistrationService,
1316
)
@@ -78,10 +81,14 @@ def process_post(self) -> Response | ProblemDetail:
7881

7982
return Response(str(service.id), response_code)
8083

81-
def process_delete(self, service_id: int) -> Response | ProblemDetail:
84+
def process_delete(self, service_id: int | str) -> Response | ProblemDetail:
8285
self.require_system_admin()
8386
try:
84-
return self.delete_service(service_id)
87+
sid = int(service_id) if isinstance(service_id, str) else service_id
88+
except ValueError:
89+
return MISSING_SERVICE
90+
try:
91+
return self.delete_service(sid)
8592
except ProblemDetailException as e:
8693
self._db.rollback()
8794
return e.problem_detail

src/palace/manager/api/admin/controller/lanes.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,15 @@ def lanes_for_parent(parent: Lane | None) -> list[dict[str, Any]]:
165165
return Response(str(lane.id), 200)
166166
raise RuntimeError("Unsupported method")
167167

168-
def lane(self, lane_identifier: int) -> Response | ProblemDetail:
168+
def lane(self, lane_identifier: int | str) -> Response | ProblemDetail:
169+
try:
170+
lane_identifier = (
171+
int(lane_identifier)
172+
if isinstance(lane_identifier, str)
173+
else lane_identifier
174+
)
175+
except ValueError:
176+
return MISSING_LANE
169177
if flask.request.method == "DELETE":
170178
library = get_request_library()
171179
self.require_library_manager(library)
@@ -197,7 +205,15 @@ def _check_lane_name_unique(
197205
LANE_WITH_PARENT_AND_DISPLAY_NAME_ALREADY_EXISTS
198206
)
199207

200-
def show_lane(self, lane_identifier: int) -> Response | ProblemDetail:
208+
def show_lane(self, lane_identifier: int | str) -> Response | ProblemDetail:
209+
try:
210+
lane_identifier = (
211+
int(lane_identifier)
212+
if isinstance(lane_identifier, str)
213+
else lane_identifier
214+
)
215+
except ValueError:
216+
return MISSING_LANE
201217
library = get_request_library()
202218
self.require_library_manager(library)
203219

@@ -209,7 +225,15 @@ def show_lane(self, lane_identifier: int) -> Response | ProblemDetail:
209225
lane.visible = True
210226
return Response(str(_("Success")), 200)
211227

212-
def hide_lane(self, lane_identifier: int) -> Response | ProblemDetail:
228+
def hide_lane(self, lane_identifier: int | str) -> Response | ProblemDetail:
229+
try:
230+
lane_identifier = (
231+
int(lane_identifier)
232+
if isinstance(lane_identifier, str)
233+
else lane_identifier
234+
)
235+
except ValueError:
236+
return MISSING_LANE
213237
library = get_request_library()
214238
self.require_library_manager(library)
215239

src/palace/manager/api/admin/controller/metadata_services.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
IntegrationSettingsSelfTestsController,
99
)
1010
from palace.manager.api.admin.form_data import ProcessFormData
11-
from palace.manager.api.admin.problem_details import DUPLICATE_INTEGRATION
11+
from palace.manager.api.admin.problem_details import (
12+
DUPLICATE_INTEGRATION,
13+
MISSING_IDENTIFIER,
14+
MISSING_SERVICE,
15+
)
1216
from palace.manager.core.selftest import HasSelfTests
1317
from palace.manager.integration.base import HasLibraryIntegrationConfiguration
1418
from palace.manager.integration.metadata.base import MetadataServiceType
@@ -85,9 +89,13 @@ def process_post(self) -> Response | ProblemDetail:
8589

8690
return Response(str(metadata_service.id), response_code)
8791

88-
def process_delete(self, service_id: int) -> Response:
92+
def process_delete(self, service_id: int | str) -> Response | ProblemDetail:
8993
self.require_system_admin()
90-
return self.delete_service(service_id)
94+
try:
95+
sid = int(service_id) if isinstance(service_id, str) else service_id
96+
except ValueError:
97+
return MISSING_SERVICE
98+
return self.delete_service(sid)
9199

92100
def run_self_tests(
93101
self, integration: IntegrationConfiguration
@@ -103,6 +111,11 @@ def run_self_tests(
103111
return None
104112

105113
def process_metadata_service_self_tests(
106-
self, identifier: int | None
114+
self, identifier: int | str | None
107115
) -> Response | ProblemDetail:
116+
if identifier is not None and isinstance(identifier, str):
117+
try:
118+
identifier = int(identifier)
119+
except ValueError:
120+
return MISSING_IDENTIFIER
108121
return self.process_self_tests(identifier)

src/palace/manager/api/admin/controller/patron_auth_services.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
from palace.manager.api.admin.form_data import ProcessFormData
1414
from palace.manager.api.admin.problem_details import (
1515
FAILED_TO_RUN_SELF_TESTS,
16+
MISSING_IDENTIFIER,
17+
MISSING_SERVICE,
1618
MULTIPLE_BASIC_AUTH_SERVICES,
1719
)
1820
from palace.manager.api.authentication.base import AuthenticationProviderType
@@ -120,17 +122,26 @@ def process_updated_libraries(
120122
for integration, _ in libraries:
121123
self.library_integration_validation(integration)
122124

123-
def process_delete(self, service_id: int) -> Response | ProblemDetail:
125+
def process_delete(self, service_id: int | str) -> Response | ProblemDetail:
124126
self.require_system_admin()
125127
try:
126-
return self.delete_service(service_id)
128+
sid = int(service_id) if isinstance(service_id, str) else service_id
129+
except ValueError:
130+
return MISSING_SERVICE
131+
try:
132+
return self.delete_service(sid)
127133
except ProblemDetailException as e:
128134
self._db.rollback()
129135
return e.problem_detail
130136

131137
def process_patron_auth_service_self_tests(
132-
self, identifier: int | None
138+
self, identifier: int | str | None
133139
) -> Response | ProblemDetail:
140+
if identifier is not None and isinstance(identifier, str):
141+
try:
142+
identifier = int(identifier)
143+
except ValueError:
144+
return MISSING_IDENTIFIER
134145
return self.process_self_tests(identifier)
135146

136147
def get_prior_test_results(

src/palace/manager/api/admin/routes.py

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -470,9 +470,7 @@ def patron_auth_services() -> Any:
470470
@requires_admin
471471
@requires_csrf_token
472472
def patron_auth_service(service_id: str) -> Any:
473-
return app.manager.admin_patron_auth_services_controller.process_delete(
474-
int(service_id)
475-
)
473+
return app.manager.admin_patron_auth_services_controller.process_delete(service_id)
476474

477475

478476
@app.route(
@@ -483,7 +481,7 @@ def patron_auth_service(service_id: str) -> Any:
483481
@requires_csrf_token
484482
def patron_auth_self_tests(identifier: str) -> Any:
485483
return app.manager.admin_patron_auth_services_controller.process_patron_auth_service_self_tests(
486-
int(identifier)
484+
identifier
487485
)
488486

489487

@@ -518,9 +516,7 @@ def metadata_services() -> Any:
518516
@requires_admin
519517
@requires_csrf_token
520518
def metadata_service(service_id: str) -> Any:
521-
return app.manager.admin_metadata_services_controller.process_delete(
522-
int(service_id)
523-
)
519+
return app.manager.admin_metadata_services_controller.process_delete(service_id)
524520

525521

526522
@app.route("/admin/metadata_service_self_tests/<identifier>", methods=["GET", "POST"])
@@ -529,7 +525,7 @@ def metadata_service(service_id: str) -> Any:
529525
@requires_csrf_token
530526
def metadata_service_self_tests(identifier: str) -> Any:
531527
return app.manager.admin_metadata_services_controller.process_metadata_service_self_tests(
532-
int(identifier)
528+
identifier
533529
)
534530

535531

@@ -546,7 +542,7 @@ def catalog_services() -> Any:
546542
@requires_admin
547543
@requires_csrf_token
548544
def catalog_service(service_id: str) -> Any:
549-
return app.manager.admin_catalog_services_controller.process_delete(int(service_id))
545+
return app.manager.admin_catalog_services_controller.process_delete(service_id)
550546

551547

552548
@app.route("/admin/discovery_services", methods=["GET", "POST"])
@@ -562,9 +558,7 @@ def discovery_services() -> Any:
562558
@requires_admin
563559
@requires_csrf_token
564560
def discovery_service(service_id: str) -> Any:
565-
return app.manager.admin_discovery_services_controller.process_delete(
566-
int(service_id)
567-
)
561+
return app.manager.admin_discovery_services_controller.process_delete(service_id)
568562

569563

570564
@app.route("/admin/announcements", methods=["GET", "POST"])
@@ -609,7 +603,7 @@ def custom_lists_get() -> Any:
609603
@requires_admin
610604
@requires_csrf_token
611605
def custom_list_get(list_id: str) -> Any:
612-
return app.manager.admin_custom_lists_controller.custom_list(int(list_id))
606+
return app.manager.admin_custom_lists_controller.custom_list(list_id)
613607

614608

615609
@library_route("/admin/custom_list/<list_id>", methods=["POST"])
@@ -618,7 +612,7 @@ def custom_list_get(list_id: str) -> Any:
618612
@requires_admin
619613
@requires_csrf_token
620614
def custom_list_post(list_id: str) -> Any:
621-
return app.manager.admin_custom_lists_controller.custom_list(int(list_id))
615+
return app.manager.admin_custom_lists_controller.custom_list(list_id)
622616

623617

624618
@library_route("/admin/custom_list/<list_id>", methods=["DELETE"])
@@ -627,7 +621,7 @@ def custom_list_post(list_id: str) -> Any:
627621
@requires_admin
628622
@requires_csrf_token
629623
def custom_list_delete(list_id: str) -> Any:
630-
return app.manager.admin_custom_lists_controller.custom_list(int(list_id))
624+
return app.manager.admin_custom_lists_controller.custom_list(list_id)
631625

632626

633627
@library_route("/admin/custom_list/<list_id>/share", methods=["POST"])
@@ -637,7 +631,7 @@ def custom_list_delete(list_id: str) -> Any:
637631
@requires_csrf_token
638632
def custom_list_share(list_id: str) -> Any:
639633
"""Share a custom list with all libraries in the CM that share the collections of this library and works of this list"""
640-
return app.manager.admin_custom_lists_controller.share_locally(int(list_id))
634+
return app.manager.admin_custom_lists_controller.share_locally(list_id)
641635

642636

643637
@library_route("/admin/custom_list/<list_id>/share", methods=["DELETE"])
@@ -647,7 +641,7 @@ def custom_list_share(list_id: str) -> Any:
647641
@requires_csrf_token
648642
def custom_list_unshare(list_id: str) -> Any:
649643
"""Unshare the list from all libraries, as long as no other library is using the list in its lanes"""
650-
return app.manager.admin_custom_lists_controller.share_locally(int(list_id))
644+
return app.manager.admin_custom_lists_controller.share_locally(list_id)
651645

652646

653647
@library_route("/admin/lanes", methods=["GET", "POST"])
@@ -665,7 +659,7 @@ def lanes() -> Any:
665659
@requires_admin
666660
@requires_csrf_token
667661
def lane(lane_identifier: str) -> Any:
668-
return app.manager.admin_lanes_controller.lane(int(lane_identifier))
662+
return app.manager.admin_lanes_controller.lane(lane_identifier)
669663

670664

671665
@library_route("/admin/lane/<lane_identifier>/show", methods=["POST"])
@@ -674,7 +668,7 @@ def lane(lane_identifier: str) -> Any:
674668
@requires_admin
675669
@requires_csrf_token
676670
def lane_show(lane_identifier: str) -> Any:
677-
return app.manager.admin_lanes_controller.show_lane(int(lane_identifier))
671+
return app.manager.admin_lanes_controller.show_lane(lane_identifier)
678672

679673

680674
@library_route("/admin/lane/<lane_identifier>/hide", methods=["POST"])
@@ -683,7 +677,7 @@ def lane_show(lane_identifier: str) -> Any:
683677
@requires_admin
684678
@requires_csrf_token
685679
def lane_hide(lane_identifier: str) -> Any:
686-
return app.manager.admin_lanes_controller.hide_lane(int(lane_identifier))
680+
return app.manager.admin_lanes_controller.hide_lane(lane_identifier)
687681

688682

689683
@library_route("/admin/lanes/reset", methods=["POST"])

0 commit comments

Comments
 (0)