feat: add start_page user config

This commit is contained in:
Herculino Trotta
2024-10-21 00:02:57 -03:00
parent 2b5011071f
commit 2b1fdd49e5
7 changed files with 45 additions and 3 deletions

View File

@@ -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"

View 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'),
),
]

View File

@@ -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"

View File

@@ -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"),

View File

@@ -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"