mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-07-13 16:22:42 +02:00
feat: add start_page user config
This commit is contained in:
@@ -4,7 +4,6 @@ from . import views
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("monthly/", views.index, name="monthly_index"),
|
path("monthly/", views.index, name="monthly_index"),
|
||||||
path("", views.index, name="monthly_index"),
|
|
||||||
path(
|
path(
|
||||||
"monthly/<int:month>/<int:year>/transactions/list/",
|
"monthly/<int:month>/<int:year>/transactions/list/",
|
||||||
views.transactions_list,
|
views.transactions_list,
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ class LoginForm(AuthenticationForm):
|
|||||||
class UserSettingsForm(forms.ModelForm):
|
class UserSettingsForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UserSettings
|
model = UserSettings
|
||||||
fields = ["language", "timezone"]
|
fields = ["language", "timezone", "start_page"]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
@@ -59,6 +59,7 @@ class UserSettingsForm(forms.ModelForm):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"language",
|
"language",
|
||||||
"timezone",
|
"timezone",
|
||||||
|
"start_page",
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit(
|
||||||
"submit", _("Save"), css_class="btn btn-outline-primary w-100"
|
"submit", _("Save"), css_class="btn btn-outline-primary w-100"
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 5.1.2 on 2024-10-21 01:18
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('users', '0007_usersettings_mute_sounds'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='usersettings',
|
||||||
|
name='start_page',
|
||||||
|
field=models.CharField(choices=[('MONTHLY_OVERVIEW', 'Overview > Monthly'), ('YEARLY_OVERVIEW', 'Overview > Yearly')], default='MONTHLY_OVERVIEW', max_length=255, verbose_name='Start page'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -22,6 +22,11 @@ class User(AbstractUser):
|
|||||||
|
|
||||||
|
|
||||||
class UserSettings(models.Model):
|
class UserSettings(models.Model):
|
||||||
|
class StartPage(models.TextChoices):
|
||||||
|
MONTHLY = "MONTHLY_OVERVIEW", _("Monthly Overview")
|
||||||
|
YEARLY = "YEARLY_OVERVIEW", _("Yearly Overview")
|
||||||
|
NETWORTH = "NETWORTH", _("Net Worth")
|
||||||
|
|
||||||
user = models.OneToOneField(
|
user = models.OneToOneField(
|
||||||
get_user_model(), on_delete=models.CASCADE, related_name="settings"
|
get_user_model(), on_delete=models.CASCADE, related_name="settings"
|
||||||
)
|
)
|
||||||
@@ -40,6 +45,12 @@ class UserSettings(models.Model):
|
|||||||
default="auto",
|
default="auto",
|
||||||
verbose_name=_("Time Zone"),
|
verbose_name=_("Time Zone"),
|
||||||
)
|
)
|
||||||
|
start_page = models.CharField(
|
||||||
|
max_length=255,
|
||||||
|
choices=StartPage,
|
||||||
|
default=StartPage.MONTHLY,
|
||||||
|
verbose_name=_("Start page"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.user.email}'s settings"
|
return f"{self.user.email}'s settings"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from django.urls import path
|
|||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
path("", views.index, name="index"),
|
||||||
path("login/", views.UserLoginView.as_view(), name="login"),
|
path("login/", views.UserLoginView.as_view(), name="login"),
|
||||||
# path("login/fallback/", views.UserLoginView.as_view(), name="fallback_login"),
|
# path("login/fallback/", views.UserLoginView.as_view(), name="fallback_login"),
|
||||||
path("logout/", views.logout_view, name="logout"),
|
path("logout/", views.logout_view, name="logout"),
|
||||||
|
|||||||
@@ -22,6 +22,18 @@ def logout_view(request):
|
|||||||
return redirect(reverse("login"))
|
return redirect(reverse("login"))
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def index(request):
|
||||||
|
if request.user.settings.start_page == UserSettings.StartPage.MONTHLY:
|
||||||
|
return redirect(reverse("monthly_index"))
|
||||||
|
elif request.user.settings.start_page == UserSettings.StartPage.YEARLY:
|
||||||
|
return redirect(reverse("yearly_index"))
|
||||||
|
elif request.user.settings.start_page == UserSettings.StartPage.NETWORTH:
|
||||||
|
return redirect(reverse("net_worth"))
|
||||||
|
else:
|
||||||
|
return redirect(reverse("monthly_index"))
|
||||||
|
|
||||||
|
|
||||||
class UserLoginView(LoginView):
|
class UserLoginView(LoginView):
|
||||||
form_class = LoginForm
|
form_class = LoginForm
|
||||||
template_name = "users/login.html"
|
template_name = "users/login.html"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{% load active_link %}
|
{% load active_link %}
|
||||||
<nav class="navbar navbar-expand-lg border-bottom bg-body-tertiary" hx-boost="true">
|
<nav class="navbar navbar-expand-lg border-bottom bg-body-tertiary" hx-boost="true">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<a class="navbar-brand fw-bold text-primary font-base" href="{% url 'monthly_index' %}">
|
<a class="navbar-brand fw-bold text-primary font-base" href="{% url 'index' %}">
|
||||||
<img src="{% static 'img/logo-icon.svg' %}" alt="WYGIWYH Logo" height="40" title="WYGIWYH"/>
|
<img src="{% static 'img/logo-icon.svg' %}" alt="WYGIWYH Logo" height="40" title="WYGIWYH"/>
|
||||||
</a>
|
</a>
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent"
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent"
|
||||||
|
|||||||
Reference in New Issue
Block a user