From 0f9cd7e07954ba52f12f64b9ecd59b36446b5972 Mon Sep 17 00:00:00 2001 From: Dan LaManna Date: Wed, 11 Mar 2026 18:31:10 +0000 Subject: [PATCH] Improve url and naming consistencies --- isic/core/api/collection.py | 9 ++-- isic/core/api/doi.py | 6 +-- isic/core/api/image.py | 14 ++--- isic/core/api/user.py | 2 +- isic/core/templates/core/partials/navbar.html | 2 +- isic/core/tests/test_api_cohort.py | 5 +- isic/core/tests/test_api_collection.py | 32 ++++++------ isic/core/tests/test_api_contributor.py | 7 +-- isic/core/tests/test_api_image.py | 25 +++++---- isic/core/tests/test_api_permissions.py | 28 +++++----- isic/core/tests/test_api_user.py | 5 +- isic/core/tests/test_cache.py | 12 ++--- isic/core/tests/test_doi.py | 10 ++-- isic/core/tests/test_search.py | 52 +++++++++---------- isic/find/api.py | 2 +- isic/ingest/api.py | 20 +++---- .../ingest/partials/breadcrumbs.html | 2 +- isic/ingest/tests/test_api_accession.py | 13 ++--- isic/ingest/tests/test_api_lesion.py | 15 +++--- isic/ingest/tests/test_api_pagination.py | 7 +-- isic/zip_download/api.py | 16 +++--- isic/zip_download/tests/test_zip_download.py | 31 +++++------ 22 files changed, 166 insertions(+), 149 deletions(-) diff --git a/isic/core/api/collection.py b/isic/core/api/collection.py index be58a41e8..b7f3832c1 100644 --- a/isic/core/api/collection.py +++ b/isic/core/api/collection.py @@ -17,7 +17,8 @@ from isic.core.pagination import CursorPagination from isic.core.permissions import get_visible_objects from isic.core.serializers import SearchQueryIn -from isic.core.services.collection import collection_create, collection_delete +from isic.core.services.collection import collection_create +from isic.core.services.collection import collection_delete as collection_delete_service from isic.core.services.collection.image import ( collection_add_images_from_isic_ids, collection_remove_images_from_isic_ids, @@ -196,7 +197,7 @@ def collection_detail(request, id: int) -> CollectionOut: response={204: None, 400: dict, 403: dict}, include_in_schema=False, ) -def collection_delete_(request, id: int): +def collection_delete(request, id: int): qs = get_visible_objects(request.user, "core.view_collection", Collection.objects.all()) collection = get_object_or_404(qs.distinct(), id=id) @@ -204,7 +205,7 @@ def collection_delete_(request, id: int): return 403, {"error": "You do not have permission to delete this collection."} try: - collection_delete(collection=collection) + collection_delete_service(collection=collection) except ValidationError as e: return 400, {"error": e.message} @@ -319,7 +320,7 @@ def collection_populate_from_list(request, id, payload: IsicIdList): @router.post( "/{id}/remove-from-list/", response={200: None, 403: dict, 409: dict}, include_in_schema=False ) -def remove_from_list(request, id, payload: IsicIdList): +def collection_remove_from_list(request, id, payload: IsicIdList): qs = get_visible_objects(request.user, "core.view_collection", Collection.objects.all()) collection = get_object_or_404(qs.distinct(), id=id) diff --git a/isic/core/api/doi.py b/isic/core/api/doi.py index c993fd51d..006572b63 100644 --- a/isic/core/api/doi.py +++ b/isic/core/api/doi.py @@ -66,7 +66,7 @@ def validate_related_identifiers(cls, v): # noqa: N805 summary="Create a draft DOI for a collection.", include_in_schema=False, ) -def create_doi(request, payload: CreateDOIIn): +def doi_create(request, payload: CreateDOIIn): collection = get_object_or_404(Collection, pk=payload.collection_id) if not request.user.has_perm("core.create_doi", collection): @@ -93,7 +93,7 @@ class UpdateDraftDOIIn(Schema): summary="Update a draft DOI.", include_in_schema=False, ) -def update_draft_doi(request, draft_doi_slug: str, payload: UpdateDraftDOIIn): +def doi_update_draft(request, draft_doi_slug: str, payload: UpdateDraftDOIIn): from isic.core.services.collection import collection_update draft_doi = get_object_or_404( @@ -116,7 +116,7 @@ def update_draft_doi(request, draft_doi_slug: str, payload: UpdateDraftDOIIn): summary="Publish a draft DOI to make it findable.", include_in_schema=False, ) -def publish_draft_doi(request, draft_doi_slug: str): +def doi_publish_draft(request, draft_doi_slug: str): with transaction.atomic(): draft_doi = get_object_or_404( DraftDoi.objects.select_for_update().select_related("collection"), slug=draft_doi_slug diff --git a/isic/core/api/image.py b/isic/core/api/image.py index df58e1625..da261a423 100644 --- a/isic/core/api/image.py +++ b/isic/core/api/image.py @@ -85,7 +85,7 @@ def resolve_metadata(image: Image) -> dict: "/", response=list[ImageOut], summary="Return a list of images.", include_in_schema=True ) @paginate(CursorPagination, ordering=Image._meta.ordering) -def list_images(request: HttpRequest): +def image_list(request: HttpRequest): qs = get_visible_objects(request.user, "core.view_image", default_qs) if settings.ISIC_USE_ELASTICSEARCH_COUNTS: @@ -107,7 +107,7 @@ def list_images(request: HttpRequest): include_in_schema=True, ) @paginate(CursorPagination, ordering=Image._meta.ordering) -def search_images(request: HttpRequest, search: SearchQueryIn = Query(...)): +def image_search(request: HttpRequest, search: SearchQueryIn = Query(...)): try: qs = search.to_queryset(user=request.user, qs=default_qs) if settings.ISIC_USE_ELASTICSEARCH_COUNTS: @@ -135,7 +135,7 @@ def search_images(request: HttpRequest, search: SearchQueryIn = Query(...)): summary="Get total size of images matching a search query.", include_in_schema=False, ) -def get_search_size(request: HttpRequest, search: SearchQueryIn = Query(...)): +def image_search_size(request: HttpRequest, search: SearchQueryIn = Query(...)): try: es_query = search.to_es_query(request.user) except ParseException as e: @@ -157,8 +157,8 @@ def get_search_size(request: HttpRequest, search: SearchQueryIn = Query(...)): @router.get("/facets/", response=dict, include_in_schema=False) -def get_facets(request: HttpRequest, search: SearchQueryIn = Query(...)): - cache_key = f"get_facets:{search.to_cache_key(request.user)}" +def image_facets(request: HttpRequest, search: SearchQueryIn = Query(...)): + cache_key = f"image_facets:{search.to_cache_key(request.user)}" cached_facets = cache.get(cache_key) set_tag("cached_facets", cached_facets is not None) @@ -182,7 +182,7 @@ def get_facets(request: HttpRequest, search: SearchQueryIn = Query(...)): summary="Retrieve a single image by ISIC ID.", include_in_schema=True, ) -def retrieve_image(request: HttpRequest, isic_id: str): +def image_detail(request: HttpRequest, isic_id: str): qs = get_visible_objects(request.user, "core.view_image", default_qs) return get_object_or_404(qs, isic_id=isic_id) @@ -197,7 +197,7 @@ class SimilarImageOut(ImageOut): summary="Find images similar to the specified image.", include_in_schema=True, ) -def get_similar_images( +def image_similar( request: HttpRequest, isic_id: str, limit: int = Query(10, le=50) ) -> list[SimilarImageOut]: qs = get_visible_objects(request.user, "core.view_image", default_qs) diff --git a/isic/core/api/user.py b/isic/core/api/user.py index 7a111b6bb..64722d4e5 100644 --- a/isic/core/api/user.py +++ b/isic/core/api/user.py @@ -42,7 +42,7 @@ def user_me(request: AuthenticatedHttpRequest): @router.put("/accept-terms/", include_in_schema=False, auth=is_authenticated) -def accept_terms_of_use(request: AuthenticatedHttpRequest): +def user_accept_terms(request: AuthenticatedHttpRequest): if not request.user.profile.accepted_terms: request.user.profile.accepted_terms = timezone.now() request.user.profile.save(update_fields=["accepted_terms"]) diff --git a/isic/core/templates/core/partials/navbar.html b/isic/core/templates/core/partials/navbar.html index 26534ab54..d7b882ed3 100644 --- a/isic/core/templates/core/partials/navbar.html +++ b/isic/core/templates/core/partials/navbar.html @@ -8,7 +8,7 @@ {% include 'core/partials/nav_elements.html' with right_arrow=1 %} - ISIC Archive + ISIC Archive