Skip to content
Snippets Groups Projects
Commit 680d4060 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Merge branch '19-adapt-for-use-with-spa' into 'master'

Resolve "Adapt for use with SPA"

Closes #19

See merge request !31
parents 7506321a 526588ab
No related branches found
No related tags found
2 merge requests!31Resolve "Adapt for use with SPA",!30Draft: Resolve "Add support for django 4"
Pipeline #134663 failed
...@@ -6,6 +6,28 @@ All notable changes to this project will be documented in this file. ...@@ -6,6 +6,28 @@ All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog`_, The format is based on `Keep a Changelog`_,
and this project adheres to `Semantic Versioning`_. and this project adheres to `Semantic Versioning`_.
Unreleased
----------
This version requires AlekSIS-Core 3.0. It is incompatible with any previous
version.
Removed
~~~~~~~
* Legacy menu integration for AlekSIS-Core pre-3.0
Added
~~~~~
* Support for SPA in AlekSIS-Core 3.0
Fixed
-----
* Replace usage of deprecated `ugettext_lazy` with `gettext_lazy`.
`1.2`_ - 2022-03-20 `1.2`_ - 2022-03-20
------------------- -------------------
......
import {
notLoggedInValidator,
hasPersonValidator,
} from "aleksis.core/routeValidators";
export default {
meta: {
inMenu: true,
titleKey: "tezor.menu_title",
icon: "mdi-piggy-bank-outline",
},
children: [
{
path: "invoice/:token/print/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.printInvoice",
},
{
path: "invoice/:token/pay",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.doPayment",
},
{
path: "clients/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.clients",
meta: {
inMenu: true,
titleKey: "tezor.clients.menu_title",
icon: "mdi-domain",
permission: "tezor.can_view_clients",
},
},
{
path: "client/create/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.createClient",
},
{
path: "client/:pk/edit/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.editClientByPk",
},
{
path: "client/:pk/delete/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.deleteClientByPk",
},
{
path: "client/:pk/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.clientByPk",
},
{
path: "client/:pk/invoice_groups/create/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.createInvoiceGroup",
},
{
path: "invoice_group/:pk/edit/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.editInvoiceGroupByPk",
},
{
path: "invoice_group/:pk/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.invoiceGroupByPk",
},
{
path: "invoice_group/:pk/delete/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.deleteInvoiceGroupByPk",
},
{
path: "invoices/my/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.personalInvoices",
meta: {
inMenu: true,
titleKey: "tezor.personal_invoices.menu_title",
icon: "mdi-receipt-outline",
},
},
{
path: "invoice/:slug/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.invoiceByToken",
},
{
path: "invoice/:token/send/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
name: "tezor.sendInvoiceByToken",
},
],
};
{
"tezor": {
"menu_title": "Payments and Money",
"clients": {
"menu_title": "Manage clients"
},
"personal_invoices": {
"menu_title": "My invoices"
}
}
}
from django.utils.translation import gettext_lazy as _
MENUS = {
"NAV_MENU_CORE": [
{
"name": _("Payments and Money"),
"url": "#",
"root": True,
"svg_icon": "mdi:piggy-bank",
"validators": [
"menu_generator.validators.is_authenticated",
"aleksis.core.util.core_helpers.has_person",
],
"submenu": [
{
"name": _("Manage clients"),
"url": "clients",
"svg_icon": "mdi:domain",
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"tezor.can_view_clients",
)
],
},
{
"name": _("My invoices"),
"url": "personal_invoices",
"svg_icon": "fa6-solid:file-invoice-dollar",
"validators": [
"menu_generator.validators.is_authenticated",
"aleksis.core.util.core_helpers.has_person",
],
},
],
}
]
}
...@@ -2,7 +2,7 @@ from django.core.exceptions import PermissionDenied, SuspiciousOperation ...@@ -2,7 +2,7 @@ from django.core.exceptions import PermissionDenied, SuspiciousOperation
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.utils.translation import ugettext as _ from django.utils.translation import gettext as _
from django.views.decorators.cache import never_cache from django.views.decorators.cache import never_cache
from django.views.generic import View from django.views.generic import View
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
......
...@@ -30,7 +30,7 @@ secondary = true ...@@ -30,7 +30,7 @@ secondary = true
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.9" python = "^3.9"
aleksis-core = "^2.8.1.dev0" aleksis-core = "^3.0"
django-payments = { version = "^1.0.0", extras = ["sofort"] } django-payments = { version = "^1.0.0", extras = ["sofort"] }
django-payments-sepa = "^1.0.1" django-payments-sepa = "^1.0.1"
......
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