user preference fixes and improvements
This commit is contained in:
parent
349b9629f8
commit
4620c78f5a
@ -3,7 +3,7 @@ from .models import *
|
|||||||
|
|
||||||
|
|
||||||
class UserPreferenceAdmin(admin.ModelAdmin):
|
class UserPreferenceAdmin(admin.ModelAdmin):
|
||||||
list_display = ('name', 'theme', 'nav_color')
|
list_display = ('name', 'theme', 'nav_color', 'default_page', 'search_style')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def name(obj):
|
def name(obj):
|
||||||
|
22
cookbook/migrations/0040_auto_20200502_1433.py
Normal file
22
cookbook/migrations/0040_auto_20200502_1433.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-02 12:33
|
||||||
|
|
||||||
|
import annoying.fields
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('cookbook', '0039_recipebook_shared'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userpreference',
|
||||||
|
name='user',
|
||||||
|
field=annoying.fields.AutoOneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL),
|
||||||
|
),
|
||||||
|
]
|
@ -1,5 +1,6 @@
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
|
from annoying.fields import AutoOneToOneField
|
||||||
from django.contrib import auth
|
from django.contrib import auth
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
@ -54,7 +55,7 @@ class UserPreference(models.Model):
|
|||||||
|
|
||||||
SEARCH_STYLE = ((SMALL, _('Small')), (LARGE, _('Large')),)
|
SEARCH_STYLE = ((SMALL, _('Small')), (LARGE, _('Large')),)
|
||||||
|
|
||||||
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
|
user = AutoOneToOneField(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')
|
||||||
@ -62,7 +63,7 @@ class UserPreference(models.Model):
|
|||||||
search_style = models.CharField(choices=SEARCH_STYLE, max_length=64, default=LARGE)
|
search_style = models.CharField(choices=SEARCH_STYLE, max_length=64, default=LARGE)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.user
|
return str(self.user)
|
||||||
|
|
||||||
|
|
||||||
class Storage(models.Model):
|
class Storage(models.Model):
|
||||||
|
@ -8,41 +8,38 @@ register = template.Library()
|
|||||||
|
|
||||||
@register.simple_tag
|
@register.simple_tag
|
||||||
def theme_url(request):
|
def theme_url(request):
|
||||||
try:
|
if not request.user.is_authenticated:
|
||||||
themes = {
|
|
||||||
UserPreference.BOOTSTRAP: 'themes/bootstrap.min.css',
|
|
||||||
UserPreference.FLATLY: 'themes/flatly.min.css',
|
|
||||||
UserPreference.DARKLY: 'themes/darkly.min.css',
|
|
||||||
UserPreference.SUPERHERO: 'themes/superhero.min.css',
|
|
||||||
}
|
|
||||||
if request.user.userpreference.theme in themes:
|
|
||||||
return static(themes[request.user.userpreference.theme])
|
|
||||||
else:
|
|
||||||
raise AttributeError
|
|
||||||
except AttributeError:
|
|
||||||
return static('themes/flatly.min.css')
|
return static('themes/flatly.min.css')
|
||||||
|
themes = {
|
||||||
|
UserPreference.BOOTSTRAP: 'themes/bootstrap.min.css',
|
||||||
|
UserPreference.FLATLY: 'themes/flatly.min.css',
|
||||||
|
UserPreference.DARKLY: 'themes/darkly.min.css',
|
||||||
|
UserPreference.SUPERHERO: 'themes/superhero.min.css',
|
||||||
|
}
|
||||||
|
if request.user.userpreference.theme in themes:
|
||||||
|
return static(themes[request.user.userpreference.theme])
|
||||||
|
else:
|
||||||
|
raise AttributeError
|
||||||
|
|
||||||
|
|
||||||
@register.simple_tag
|
@register.simple_tag
|
||||||
def nav_color(request):
|
def nav_color(request):
|
||||||
try:
|
if not request.user.is_authenticated:
|
||||||
return request.user.userpreference.nav_color
|
|
||||||
except AttributeError:
|
|
||||||
return 'primary'
|
return 'primary'
|
||||||
|
return request.user.userpreference.nav_color
|
||||||
|
|
||||||
|
|
||||||
@register.simple_tag
|
@register.simple_tag
|
||||||
def tabulator_theme_url(request):
|
def tabulator_theme_url(request):
|
||||||
try:
|
if not request.user.is_authenticated:
|
||||||
themes = {
|
|
||||||
UserPreference.BOOTSTRAP: 'tabulator/tabulator_bootstrap4.min.css',
|
|
||||||
UserPreference.FLATLY: 'tabulator/tabulator_bootstrap4.min.css',
|
|
||||||
UserPreference.DARKLY: 'tabulator/tabulator_site.min.css',
|
|
||||||
UserPreference.SUPERHERO: 'tabulator/tabulator_site.min.css',
|
|
||||||
}
|
|
||||||
if request.user.userpreference.theme in themes:
|
|
||||||
return static(themes[request.user.userpreference.theme])
|
|
||||||
else:
|
|
||||||
raise AttributeError
|
|
||||||
except AttributeError:
|
|
||||||
return static('tabulator/tabulator_bootstrap4.min.css')
|
return static('tabulator/tabulator_bootstrap4.min.css')
|
||||||
|
themes = {
|
||||||
|
UserPreference.BOOTSTRAP: 'tabulator/tabulator_bootstrap4.min.css',
|
||||||
|
UserPreference.FLATLY: 'tabulator/tabulator_bootstrap4.min.css',
|
||||||
|
UserPreference.DARKLY: 'tabulator/tabulator_site.min.css',
|
||||||
|
UserPreference.SUPERHERO: 'tabulator/tabulator_site.min.css',
|
||||||
|
}
|
||||||
|
if request.user.userpreference.theme in themes:
|
||||||
|
return static(themes[request.user.userpreference.theme])
|
||||||
|
else:
|
||||||
|
raise AttributeError
|
||||||
|
@ -179,10 +179,7 @@ def shopping_list(request):
|
|||||||
|
|
||||||
@group_required('guest')
|
@group_required('guest')
|
||||||
def settings(request):
|
def settings(request):
|
||||||
try:
|
up = request.user.userpreference
|
||||||
up = request.user.userpreference
|
|
||||||
except UserPreference.DoesNotExist:
|
|
||||||
up = None
|
|
||||||
|
|
||||||
user_name_form = UserNameForm(instance=request.user)
|
user_name_form = UserNameForm(instance=request.user)
|
||||||
password_form = PasswordChangeForm(request.user)
|
password_form = PasswordChangeForm(request.user)
|
||||||
|
@ -7,6 +7,7 @@ djangorestframework
|
|||||||
django-autocomplete-light
|
django-autocomplete-light
|
||||||
django-emoji-picker
|
django-emoji-picker
|
||||||
django-cleanup
|
django-cleanup
|
||||||
|
django-annoying
|
||||||
bleach
|
bleach
|
||||||
bleach-whitelist
|
bleach-whitelist
|
||||||
six
|
six
|
||||||
|
Loading…
Reference in New Issue
Block a user