added ability to change default page
This commit is contained in:
@ -31,7 +31,7 @@ class UserPreferenceForm(forms.ModelForm):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UserPreference
|
model = UserPreference
|
||||||
fields = ('default_unit', 'theme', 'nav_color')
|
fields = ('default_unit', 'theme', 'nav_color', 'default_page')
|
||||||
|
|
||||||
help_texts = {
|
help_texts = {
|
||||||
'nav_color': _('Color of the top navigation bar. Not all colors work with all themes, just try them out!'),
|
'nav_color': _('Color of the top navigation bar. Not all colors work with all themes, just try them out!'),
|
||||||
|
18
cookbook/migrations/0033_userpreference_default_page.py
Normal file
18
cookbook/migrations/0033_userpreference_default_page.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.4 on 2020-04-13 20:41
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('cookbook', '0032_userpreference_default_unit'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='userpreference',
|
||||||
|
name='default_page',
|
||||||
|
field=models.CharField(choices=[('SEARCH', 'Search'), ('PLAN', 'Meal-Plan')], default='SEARCH', max_length=64),
|
||||||
|
),
|
||||||
|
]
|
@ -41,10 +41,18 @@ class UserPreference(models.Model):
|
|||||||
|
|
||||||
COLORS = ((PRIMARY, 'Primary'), (SECONDARY, 'Secondary'), (SUCCESS, 'Success'), (INFO, 'Info'), (WARNING, 'Warning'), (DANGER, 'Danger'), (LIGHT, 'Light'), (DARK, 'Dark'))
|
COLORS = ((PRIMARY, 'Primary'), (SECONDARY, 'Secondary'), (SUCCESS, 'Success'), (INFO, 'Info'), (WARNING, 'Warning'), (DANGER, 'Danger'), (LIGHT, 'Light'), (DARK, 'Dark'))
|
||||||
|
|
||||||
|
# Default Page
|
||||||
|
SEARCH = 'SEARCH'
|
||||||
|
PLAN = 'PLAN'
|
||||||
|
BOOKS = 'BOOKS'
|
||||||
|
|
||||||
|
PAGES = ((SEARCH, _('Search')), (PLAN, _('Meal-Plan')), (BOOKS, _('Books')), )
|
||||||
|
|
||||||
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
|
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
|
||||||
theme = models.CharField(choices=THEMES, max_length=128, default=FLATLY)
|
theme = models.CharField(choices=THEMES, max_length=128, default=FLATLY)
|
||||||
nav_color = models.CharField(choices=COLORS, max_length=128, default=PRIMARY)
|
nav_color = models.CharField(choices=COLORS, max_length=128, default=PRIMARY)
|
||||||
default_unit = models.CharField(max_length=32, default='g')
|
default_unit = models.CharField(max_length=32, default='g')
|
||||||
|
default_page = models.CharField(choices=PAGES, max_length=64, default=SEARCH)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.user
|
return self.user
|
||||||
|
@ -74,8 +74,8 @@
|
|||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="navbarText">
|
<div class="collapse navbar-collapse" id="navbarText">
|
||||||
<ul class="navbar-nav mr-auto">
|
<ul class="navbar-nav mr-auto">
|
||||||
<li class="nav-item {% if request.resolver_match.url_name in 'index,edit_recipe,edit_internal_recipe,edit_external_recipe,view_recipe' %}active{% endif %}">
|
<li class="nav-item {% if request.resolver_match.url_name in 'view_search,edit_recipe,edit_internal_recipe,edit_external_recipe,view_recipe' %}active{% endif %}">
|
||||||
<a class="nav-link" href="{% url 'index' %}"><i class="fas fa-book"></i> {% trans 'Cookbook' %}<span
|
<a class="nav-link" href="{% url 'view_search' %}"><i class="fas fa-book"></i> {% trans 'Cookbook' %}<span
|
||||||
class="sr-only">(current)</span></a>
|
class="sr-only">(current)</span></a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ from cookbook.helper import dal
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.index, name='index'),
|
path('', views.index, name='index'),
|
||||||
|
path('search/', views.search, name='view_search'),
|
||||||
path('books/', views.books, name='view_books'),
|
path('books/', views.books, name='view_books'),
|
||||||
path('plan/', views.meal_plan, name='view_plan'),
|
path('plan/', views.meal_plan, name='view_plan'),
|
||||||
path('shopping/', views.shopping_list, name='view_shopping'),
|
path('shopping/', views.shopping_list, name='view_shopping'),
|
||||||
|
@ -6,7 +6,9 @@ from django.contrib import messages
|
|||||||
from django.contrib.auth import update_session_auth_hash
|
from django.contrib.auth import update_session_auth_hash
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth.forms import PasswordChangeForm
|
from django.contrib.auth.forms import PasswordChangeForm
|
||||||
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import render, get_object_or_404
|
from django.shortcuts import render, get_object_or_404
|
||||||
|
from django.urls import reverse_lazy
|
||||||
from django_tables2 import RequestConfig
|
from django_tables2 import RequestConfig
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
@ -16,6 +18,19 @@ from cookbook.tables import RecipeTable
|
|||||||
|
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
|
if not request.user.is_authenticated:
|
||||||
|
return HttpResponseRedirect(reverse_lazy('view_search'))
|
||||||
|
|
||||||
|
page_map = {
|
||||||
|
UserPreference.SEARCH: reverse_lazy('view_search'),
|
||||||
|
UserPreference.PLAN: reverse_lazy('view_plan'),
|
||||||
|
UserPreference.BOOKS: reverse_lazy('view_books'),
|
||||||
|
}
|
||||||
|
|
||||||
|
return HttpResponseRedirect(page_map.get(request.user.userpreference.default_page))
|
||||||
|
|
||||||
|
|
||||||
|
def search(request):
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
f = RecipeFilter(request.GET, queryset=Recipe.objects.all().order_by('name'))
|
f = RecipeFilter(request.GET, queryset=Recipe.objects.all().order_by('name'))
|
||||||
|
|
||||||
@ -176,6 +191,7 @@ def settings(request):
|
|||||||
up.theme = form.cleaned_data['theme']
|
up.theme = form.cleaned_data['theme']
|
||||||
up.nav_color = form.cleaned_data['nav_color']
|
up.nav_color = form.cleaned_data['nav_color']
|
||||||
up.default_unit = form.cleaned_data['default_unit']
|
up.default_unit = form.cleaned_data['default_unit']
|
||||||
|
up.default_page = form.cleaned_data['default_page']
|
||||||
up.save()
|
up.save()
|
||||||
|
|
||||||
if 'user_name_form' in request.POST:
|
if 'user_name_form' in request.POST:
|
||||||
|
Reference in New Issue
Block a user