mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-04-17 06:19:48 +02:00
feat: add start_page user config
This commit is contained in:
@@ -4,7 +4,6 @@ from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path("monthly/", views.index, name="monthly_index"),
|
||||
path("", views.index, name="monthly_index"),
|
||||
path(
|
||||
"monthly/<int:month>/<int:year>/transactions/list/",
|
||||
views.transactions_list,
|
||||
|
||||
@@ -48,7 +48,7 @@ class LoginForm(AuthenticationForm):
|
||||
class UserSettingsForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = UserSettings
|
||||
fields = ["language", "timezone"]
|
||||
fields = ["language", "timezone", "start_page"]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
@@ -59,6 +59,7 @@ class UserSettingsForm(forms.ModelForm):
|
||||
self.helper.layout = Layout(
|
||||
"language",
|
||||
"timezone",
|
||||
"start_page",
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Save"), css_class="btn btn-outline-primary w-100"
|
||||
|
||||
18
app/apps/users/migrations/0008_usersettings_start_page.py
Normal file
18
app/apps/users/migrations/0008_usersettings_start_page.py
Normal file
@@ -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 StartPage(models.TextChoices):
|
||||
MONTHLY = "MONTHLY_OVERVIEW", _("Monthly Overview")
|
||||
YEARLY = "YEARLY_OVERVIEW", _("Yearly Overview")
|
||||
NETWORTH = "NETWORTH", _("Net Worth")
|
||||
|
||||
user = models.OneToOneField(
|
||||
get_user_model(), on_delete=models.CASCADE, related_name="settings"
|
||||
)
|
||||
@@ -40,6 +45,12 @@ class UserSettings(models.Model):
|
||||
default="auto",
|
||||
verbose_name=_("Time Zone"),
|
||||
)
|
||||
start_page = models.CharField(
|
||||
max_length=255,
|
||||
choices=StartPage,
|
||||
default=StartPage.MONTHLY,
|
||||
verbose_name=_("Start page"),
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.user.email}'s settings"
|
||||
|
||||
@@ -3,6 +3,7 @@ from django.urls import path
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path("", views.index, name="index"),
|
||||
path("login/", views.UserLoginView.as_view(), name="login"),
|
||||
# path("login/fallback/", views.UserLoginView.as_view(), name="fallback_login"),
|
||||
path("logout/", views.logout_view, name="logout"),
|
||||
|
||||
@@ -22,6 +22,18 @@ def logout_view(request):
|
||||
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):
|
||||
form_class = LoginForm
|
||||
template_name = "users/login.html"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{% load active_link %}
|
||||
<nav class="navbar navbar-expand-lg border-bottom bg-body-tertiary" hx-boost="true">
|
||||
<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"/>
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent"
|
||||
|
||||
Reference in New Issue
Block a user