mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-04-24 17:48:41 +02:00
feat: add start_page user config
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user