From 1074863e516fbbb8ed5758ab438e005738271b4c Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sun, 19 Mar 2023 15:44:19 +0100 Subject: [PATCH] Migrate to new SPA --- aleksis/apps/kort/frontend/index.js | 173 ++++++++++++++++++++ aleksis/apps/kort/frontend/messages/en.json | 14 ++ aleksis/apps/kort/menus.py | 53 ------ aleksis/apps/kort/urls.py | 3 + pyproject.toml | 2 +- 5 files changed, 191 insertions(+), 54 deletions(-) create mode 100644 aleksis/apps/kort/frontend/index.js create mode 100644 aleksis/apps/kort/frontend/messages/en.json delete mode 100644 aleksis/apps/kort/menus.py diff --git a/aleksis/apps/kort/frontend/index.js b/aleksis/apps/kort/frontend/index.js new file mode 100644 index 0000000..534f76b --- /dev/null +++ b/aleksis/apps/kort/frontend/index.js @@ -0,0 +1,173 @@ +export default { + meta: { + inMenu: true, + titleKey: "kort.menu_title", + icon: "mdi-card-account-details-outline", + }, + children: [ + { + path: "cards/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.cards", + meta: { + inMenu: true, + titleKey: "kort.card.menu_title", + icon: "mdi-card-multiple-outline", + permission: "kort.view_cards_rule", + }, + + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "cards/create/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.createCard", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "cards/:pk/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.card", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "cards/:pk/generate_pdf/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.generateCardPdf", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "cards/:pk/deactivate/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.deactivateCard", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "cards/:pk/print/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.printCard", + + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "cards/:pk/delete/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.deleteCard", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "printers/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.cardPrinters", + meta: { + inMenu: true, + titleKey: "kort.printer.menu_title", + icon: "mdi-printer-outline", + permission: "kort.view_cardprinters_rule", + }, + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "printers/create/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.createCardPrinter", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "printers/:pk/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.cardPrinter", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "printers/:pk/edit/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.editCardPrinter", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "printers/:pk/delete/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.deleteCardPrinter", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "printers/:pk/config/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.cardPrinterConfig", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "layouts/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.cardLayouts", + meta: { + inMenu: true, + titleKey: "kort.layout.menu_title", + icon: "mdi-card-account-details-star-outline", + permission: "kort.view_cardlayouts_rule", + }, + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "layouts/create/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.createCardLayout", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "layouts/:pk/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.cardLayout", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "layouts/:pk/edit/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.editCardLayout", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "layouts/:pk/delete/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "kort.deleteCardLayout", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + ], +}; diff --git a/aleksis/apps/kort/frontend/messages/en.json b/aleksis/apps/kort/frontend/messages/en.json new file mode 100644 index 0000000..ef986e7 --- /dev/null +++ b/aleksis/apps/kort/frontend/messages/en.json @@ -0,0 +1,14 @@ +{ + "kort": { + "menu_title": "Student ID Cards", + "card": { + "menu_title": "All Cards" + }, + "printer": { + "menu_title": "Card Printers" + }, + "layout": { + "menu_title": "Card Layouts" + } + } +} diff --git a/aleksis/apps/kort/menus.py b/aleksis/apps/kort/menus.py deleted file mode 100644 index 939fe3f..0000000 --- a/aleksis/apps/kort/menus.py +++ /dev/null @@ -1,53 +0,0 @@ -from django.utils.translation import ugettext_lazy as _ - -MENUS = { - "NAV_MENU_CORE": [ - { - "name": _("Student ID Cards"), - "url": "#", - "root": True, - "svg_icon": "mdi:card-account-details-outline", - "validators": [ - ( - "aleksis.core.util.predicates.permission_validator", - "kort.view_menu_rule", - ) - ], - "submenu": [ - { - "name": _("All Cards"), - "url": "cards", - "svg_icon": "mdi:card-multiple-outline", - "validators": [ - ( - "aleksis.core.util.predicates.permission_validator", - "kort.view_cards_rule", - ) - ], - }, - { - "name": _("Card Printers"), - "url": "card_printers", - "svg_icon": "mdi:printer-outline", - "validators": [ - ( - "aleksis.core.util.predicates.permission_validator", - "kort.view_cardprinters_rule", - ) - ], - }, - { - "name": _("Card Layouts"), - "url": "card_layouts", - "svg_icon": "mdi:card-account-details-star-outline", - "validators": [ - ( - "aleksis.core.util.predicates.permission_validator", - "kort.view_cardlayouts_rule", - ) - ], - }, - ], - } - ] -} diff --git a/aleksis/apps/kort/urls.py b/aleksis/apps/kort/urls.py index e9809cc..424fd51 100644 --- a/aleksis/apps/kort/urls.py +++ b/aleksis/apps/kort/urls.py @@ -37,6 +37,9 @@ urlpatterns = [ views.CardLayoutDeleteView.as_view(), name="delete_card_layout", ), +] + +api_urlpatterns = [ path("api/v1/printers/", api.CardPrinterDetails.as_view(), name="api_card_printer"), path( "api/v1/printers/<int:pk>/status/", diff --git a/pyproject.toml b/pyproject.toml index 2b33e1b..62f4f08 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ secondary = true [tool.poetry.dependencies] python = "^3.9" -aleksis-core = "^2.12" +aleksis-core = "^3.0b2" python-barcode = "^0.14.0" django-formtools = "^2.3" django-ace = "^1.0.12" -- GitLab