Merge pull request #1277 from ae-utbm/pedagogy

Don't craft urls in pedagogy frontend
This commit is contained in:
2025-12-25 17:01:48 +01:00
committed by GitHub
4 changed files with 28 additions and 4 deletions

View File

@@ -50,4 +50,4 @@ class UeController(ControllerBase):
) )
@paginate(PageNumberPaginationExtra, page_size=100) @paginate(PageNumberPaginationExtra, page_size=100)
def fetch_ue_list(self, search: Query[UeFilterSchema]): 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 typing import Annotated, Literal
from django.db.models import Q from django.db.models import Q
from django.urls import reverse
from django.utils import html from django.utils import html
from haystack.query import SearchQuerySet from haystack.query import SearchQuerySet
from ninja import FilterLookup, FilterSchema, ModelSchema, Schema from ninja import FilterLookup, FilterSchema, ModelSchema, Schema
@@ -85,6 +86,22 @@ class SimpleUeSchema(ModelSchema):
"department", "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): class UeSchema(ModelSchema):
"""Our complete representation of an UE""" """Our complete representation of an UE"""

View File

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

View File

@@ -107,6 +107,13 @@ class TestUESearch(TestCase):
"credit_type": ue.credit_type, "credit_type": ue.credit_type,
"semester": ue.semester, "semester": ue.semester,
"department": ue.department, "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}
),
} }
], ],
} }