From 6ec18345409a024221493773b0413d981999a88a Mon Sep 17 00:00:00 2001 From: Sli Date: Wed, 24 Dec 2025 14:41:26 +0100 Subject: [PATCH] Don't craft urls in pedagogy frontend --- pedagogy/api.py | 2 +- pedagogy/schemas.py | 17 +++++++++++++++++ pedagogy/templates/pedagogy/guide.jinja | 6 +++--- pedagogy/tests/test_api.py | 7 +++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/pedagogy/api.py b/pedagogy/api.py index 18889ac4..24f5919b 100644 --- a/pedagogy/api.py +++ b/pedagogy/api.py @@ -50,4 +50,4 @@ class UeController(ControllerBase): ) @paginate(PageNumberPaginationExtra, page_size=100) def fetch_ue_list(self, search: Query[UeFilterSchema]): - return search.filter(UE.objects.order_by("code").values()) + return search.filter(UE.objects.order_by("code")) diff --git a/pedagogy/schemas.py b/pedagogy/schemas.py index 6cf0e5dc..aaa295b9 100644 --- a/pedagogy/schemas.py +++ b/pedagogy/schemas.py @@ -1,6 +1,7 @@ from typing import Annotated, Literal from django.db.models import Q +from django.urls import reverse from django.utils import html from haystack.query import SearchQuerySet from ninja import FilterLookup, FilterSchema, ModelSchema, Schema @@ -85,6 +86,22 @@ class SimpleUeSchema(ModelSchema): "department", ] + detail_url: str + edit_url: str + delete_url: str + + @staticmethod + def resolve_detail_url(obj: UE) -> str: + return reverse("pedagogy:ue_detail", kwargs={"ue_id": obj.id}) + + @staticmethod + def resolve_edit_url(obj: UE) -> str: + return reverse("pedagogy:ue_update", kwargs={"ue_id": obj.id}) + + @staticmethod + def resolve_delete_url(obj: UE) -> str: + return reverse("pedagogy:ue_delete", kwargs={"ue_id": obj.id}) + class UeSchema(ModelSchema): """Our complete representation of an UE""" diff --git a/pedagogy/templates/pedagogy/guide.jinja b/pedagogy/templates/pedagogy/guide.jinja index 5698fc80..ee420662 100644 --- a/pedagogy/templates/pedagogy/guide.jinja +++ b/pedagogy/templates/pedagogy/guide.jinja @@ -109,7 +109,7 @@ diff --git a/pedagogy/tests/test_api.py b/pedagogy/tests/test_api.py index 8e9724f9..2726252d 100644 --- a/pedagogy/tests/test_api.py +++ b/pedagogy/tests/test_api.py @@ -107,6 +107,13 @@ class TestUESearch(TestCase): "credit_type": ue.credit_type, "semester": ue.semester, "department": ue.department, + "detail_url": reverse( + "pedagogy:ue_detail", kwargs={"ue_id": ue.id} + ), + "edit_url": reverse("pedagogy:ue_update", kwargs={"ue_id": ue.id}), + "delete_url": reverse( + "pedagogy:ue_delete", kwargs={"ue_id": ue.id} + ), } ], }