Don't craft urls in pedagogy frontend

This commit is contained in:
2025-12-24 14:41:26 +01:00
parent 086a61f493
commit 6ec1834540
4 changed files with 28 additions and 4 deletions

View File

@@ -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"))

View File

@@ -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"""

View File

@@ -109,7 +109,7 @@
<tbody :aria-busy="loading">
<template x-for="ue in ues.results" :key="ue.id">
<tr
@click="window.location.href = `/pedagogy/ue/${ue.id}`"
@click="window.location.href = ue.detail_url"
class="clickable"
:class="{closed: ue.semester === 'CLOSED'}"
>
@@ -122,10 +122,10 @@
<td><i :class="ue.semester.includes('AUTUMN') && 'fa fa-leaf'"></i></td>
<td><i :class="ue.semester.includes('SPRING') && 'fa-regular fa-sun'"></i></td>
{%- if user.has_perm("pedagogy.change_ue") -%}
<td><a :href="`/pedagogy/ue/${ue.id}/edit`">{% trans %}Edit{% endtrans %}</a></td>
<td><a :href="ue.edit_url">{% trans %}Edit{% endtrans %}</a></td>
{%- endif -%}
{%- if user.has_perm("pedagogy.delete_ue") -%}
<td><a :href="`/pedagogy/ue/${ue.id}/delete`">{% trans %}Delete{% endtrans %}</a></td>
<td><a :href="ue.delete_url">{% trans %}Delete{% endtrans %}</a></td>
{%- endif -%}
</tr>
</template>

View File

@@ -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}
),
}
],
}