added user name change

This commit is contained in:
vabene1111 2020-03-18 12:51:13 +01:00
parent a8a7d4e0f4
commit 9e524a8f22
7 changed files with 63 additions and 26 deletions

View File

@ -2,19 +2,12 @@ from django.contrib import admin
from .models import *
def get_user_name(user):
if (name := f"{user.first_name} {user.last_name}") == "":
return name
else:
return user.username
class UserPreferenceAdmin(admin.ModelAdmin):
list_display = ('name', 'theme', 'nav_color')
@staticmethod
def name(obj):
return get_user_name(obj.user)
return obj.user.get_user_name()
admin.site.register(UserPreference, UserPreferenceAdmin)
@ -48,7 +41,7 @@ class RecipeAdmin(admin.ModelAdmin):
@staticmethod
def created_by(obj):
return get_user_name(obj.created_by)
return obj.created_by.get_user_name()
admin.site.register(Recipe, RecipeAdmin)
@ -69,10 +62,10 @@ class CommentAdmin(admin.ModelAdmin):
@staticmethod
def name(obj):
return get_user_name(obj.created_by)
return obj.created_by.get_user_name()
admin.site.register(Comment)
admin.site.register(Comment, CommentAdmin)
class RecipeImportAdmin(admin.ModelAdmin):
@ -83,11 +76,11 @@ admin.site.register(RecipeImport, RecipeImportAdmin)
class RecipeBookAdmin(admin.ModelAdmin):
list_display = ('name', 'user')
list_display = ('name', 'user_name')
@staticmethod
def user(obj):
return get_user_name(obj.user)
def user_name(obj):
return obj.user.get_user_name()
admin.site.register(RecipeBook, RecipeBookAdmin)
@ -105,7 +98,7 @@ class MealPlanAdmin(admin.ModelAdmin):
@staticmethod
def user(obj):
return get_user_name(obj.user)
return obj.user.get_user_name()
admin.site.register(MealPlan, MealPlanAdmin)

View File

@ -27,6 +27,8 @@ class DateWidget(forms.DateInput):
class UserPreferenceForm(forms.ModelForm):
prefix = 'preference'
class Meta:
model = UserPreference
fields = ('theme', 'nav_color')
@ -36,6 +38,18 @@ class UserPreferenceForm(forms.ModelForm):
}
class UserNameForm(forms.ModelForm):
prefix = 'name'
class Meta:
model = User
fields = ('first_name', 'last_name')
help_texts = {
'first_name': _('Both fields are optional. If none are given the username will be displayed instead')
}
class ExternalRecipeForm(forms.ModelForm):
file_path = forms.CharField(disabled=True, required=False)
storage = forms.ModelChoiceField(queryset=Storage.objects.all(), disabled=True, required=False)

View File

@ -1,10 +1,21 @@
import re
from django.contrib import auth
from django.contrib.auth.models import User
from django.utils.translation import gettext as _
from django.db import models
def get_user_name(self):
if not (name := f"{self.first_name} {self.last_name}") == " ":
return name
else:
return self.username
auth.models.User.add_to_class('get_user_name', get_user_name)
def get_model_name(model):
return ('_'.join(re.findall('[A-Z][^A-Z]*', model.__name__))).lower()

View File

@ -137,7 +137,7 @@
{% if user.is_authenticated %}
<li class="nav-item dropdown {% if request.resolver_match.url_name in 'view_settings' %}active{% endif %}">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false"><i class="fas fa-user-alt"></i> {{ user.username }}
aria-haspopup="true" aria-expanded="false"><i class="fas fa-user-alt"></i> {{ user.get_user_name }}
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownMenuLink">

View File

@ -69,7 +69,7 @@
{% endif %}
{% if recipe.internal %}
<small>{% trans 'by' %} {{ recipe.created_by.username }}<br/></small>
<small>{% trans 'by' %} {{ recipe.created_by.get_user_name }}<br/></small>
{% endif %}
{% if recipe.keywords %}

View File

@ -14,7 +14,18 @@
<br/>
<br/>
<h4><i class="fas fa-language"></i> {% trans 'Language' %}</h4>
<h4><i class="fas fa-user-edit fa-fw"></i> {% trans 'Account' %}</h4>
<form action="." method="post">
{% csrf_token %}
{{ user_name_form|crispy }}
<button class="btn btn-success" type="submit"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
</form>
<br/>
<br/>
<h4><i class="fas fa-language fa-fw"></i> {% trans 'Language' %}</h4>
<div class="row">
<div class="col-md-12">
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
@ -39,11 +50,11 @@
<br/>
<br/>
<h4><i class="fas fa-palette"></i>{% trans 'Style' %}</h4>
<h4><i class="fas fa-palette fa-fw"></i> {% trans 'Style' %}</h4>
<form action="." method="post">
{% csrf_token %}
{{ form|crispy }}
{{ preference_form|crispy }}
<button class="btn btn-success" type="submit"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
</form>

View File

@ -162,7 +162,7 @@ def settings(request):
up = None
if request.method == "POST":
form = UserPreferenceForm(request.POST)
form = UserPreferenceForm(request.POST, prefix='preference')
if form.is_valid():
if not up:
up = UserPreference(user=request.user)
@ -170,9 +170,17 @@ def settings(request):
up.nav_color = form.cleaned_data['nav_color']
up.save()
if up:
form = UserPreferenceForm(instance=up)
else:
form = UserPreferenceForm()
form = UserNameForm(request.POST, prefix='name')
if form.is_valid():
request.user.first_name = form.cleaned_data['first_name']
request.user.last_name = form.cleaned_data['last_name']
request.user.save()
return render(request, 'settings.html', {'form': form})
if up:
preference_form = UserPreferenceForm(instance=up)
else:
preference_form = UserPreferenceForm()
user_name_form = UserNameForm(instance=request.user)
return render(request, 'settings.html', {'preference_form': preference_form, 'user_name_form': user_name_form})