Skip to content
Snippets Groups Projects
Commit 2c8bc2ff authored by Hangzhi Yu's avatar Hangzhi Yu
Browse files

Add SPA support

parent 426bdd2a
No related tags found
1 merge request!290Resolve "Adaptations for SPA operation"
Pipeline #108648 failed
......@@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_.
Unreleased
----------
Added
~~~~~
* Add support for operation with SPA.
Changed
~~~~~~~
......
import { hasPersonValidator } from "aleksis.core/routeValidators";
export default
{
meta: {
inMenu: true,
titleKey: "chronos.menu_title",
icon: "mdi-school-outline",
validators: [
hasPersonValidator
]
},
children: [
{
path: "",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.allTimetables",
meta: {
inMenu: true,
titleKey: "chronos.timetable.menu_title_all",
icon: "mdi-grid",
permission: "chronos.view_timetable_overview_rule",
},
},
{
path: "timetable/my/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.myTimetable",
meta: {
inMenu: true,
titleKey: "chronos.timetable.menu_title_my",
icon: "mdi-account-outline",
permission: "chronos.view_my_timetable_rule",
},
},
{
path: "timetable/my/:year/:month/:day/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.myTimetableByDate",
},
{
path: "timetable/:type_/:pk/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.timetable",
},
{
path: "timetable/:type_/:pk/:year/:week/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.timetableByWeek",
},
{
path: "timetable/:type_/:pk/print/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.timetablePrint",
},
{
path: "timetable/:type_/:pk/:regular/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.timetableRegular",
},
{
path: "lessons/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.lessonsDay",
meta: {
inMenu: true,
titleKey: "chronos.lessons.menu_title_daily",
icon: "mdi-calendar-outline",
permission: "chronos.view_lessons_day_rule",
},
},
{
path: "lessons/:year/:month/:day/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.lessonsDayByDate",
},
{
path: "lessons/:id_/:week/substitution/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.editSubstitution",
},
{
path: "lessons/:id_/:week/substitution/delete/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.deleteSubstitution",
},
{
path: "substitutions/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.substitutions",
meta: {
inMenu: true,
titleKey: "chronos.substitutions.menu_title",
icon: "mdi-update",
permission: "chronos.view_substitutions_rule",
},
},
{
path: "substitutions/print/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.substitutionsPrint",
},
{
path: "substitutions/:year/:month/:day/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.substitutionsByDate",
},
{
path: "substitutions/:year/:month/:day/print/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.substitutionsPrintByDate",
},
{
path: "supervisions/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.supervisionsDay",
meta: {
inMenu: true,
titleKey: "chronos.supervisions.menu_title_daily",
icon: "mdi-calendar-outline",
permission: "chronos.view_supervisions_day_rule",
},
},
{
path: "supervisions/:year/:month/:day/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.supervisionsDayByDate",
},
{
path: "supervisions/:id_/:week/substitution/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.editSupervisionSubstitution",
},
{
path: "supervisions/:id_/:week/substitution/delete/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "chronos.deleteSupervisionSubstitution",
},
],
}
\ No newline at end of file
{
"chronos": {
"menu_title": "Stundenpläne"
}
}
\ No newline at end of file
{
"chronos": {
"menu_title": "Timetables",
"timetable": {
"menu_title_all": "All timetables",
"menu_title_my": "My timetable"
},
"lessons": {
"menu_title_daily": "Daily lessons"
},
"substitutions": {
"menu_title": "Substitutions"
},
"supervisions": {
"menu_title_daily": "Daily supervisions"
}
}
}
\ No newline at end of file
......@@ -14,6 +14,7 @@ import reversion
from django_tables2 import RequestConfig
from rules.contrib.views import permission_required
from aleksis.core.decorators import pwa_cache
from aleksis.core.models import Announcement
from aleksis.core.util import messages
from aleksis.core.util.core_helpers import has_person
......@@ -39,6 +40,7 @@ from .util.date import CalendarWeek, get_weeks_for_year, week_weekday_to_date
from .util.js import date_unix
@pwa_cache
@permission_required("chronos.view_timetable_overview_rule")
def all_timetables(request: HttpRequest) -> HttpResponse:
"""View all timetables for persons, groups and rooms."""
......@@ -54,6 +56,7 @@ def all_timetables(request: HttpRequest) -> HttpResponse:
return render(request, "chronos/all.html", context)
@pwa_cache
@permission_required("chronos.view_my_timetable_rule")
def my_timetable(
request: HttpRequest,
......@@ -115,6 +118,7 @@ def my_timetable(
return redirect("all_timetables")
@pwa_cache
@permission_required("chronos.view_timetable_rule", fn=get_el_by_pk)
def timetable(
request: HttpRequest,
......@@ -206,6 +210,7 @@ def timetable(
return render(request, "chronos/timetable.html", context)
@pwa_cache
@permission_required("chronos.view_lessons_day_rule")
def lessons_day(
request: HttpRequest,
......@@ -325,6 +330,7 @@ def delete_substitution(request: HttpRequest, id_: int, week: int) -> HttpRespon
return redirect("lessons_day_by_date", year=date.year, month=date.month, day=date.day)
@pwa_cache
@permission_required("chronos.view_substitutions_rule")
def substitutions(
request: HttpRequest,
......@@ -341,6 +347,7 @@ def substitutions(
return render_pdf(request, "chronos/substitutions_print.html", context)
@pwa_cache
@permission_required("chronos.view_supervisions_day_rule")
def supervisions_day(
request: HttpRequest,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment