You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.5 KiB

# coding=utf-8
from gettext import gettext as _
from django import forms
from django.contrib.auth.forms import ReadOnlyPasswordHashField
from django.contrib.auth.forms import UsernameField
from django.contrib.auth.models import User
from django.urls import reverse
from food_planner.models import Profile
class UserForm(forms.ModelForm):
password = ReadOnlyPasswordHashField(
'Raw passwords are not stored, so there is no way to see the '
'password, but you can change the password using '
'<a href="{}">this form</a>.'
class Meta:
model = User
fields = ['username', 'password', 'email', 'first_name', 'last_name']
field_classes = {'username': UsernameField}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
password = self.fields.get('password')
if password:
password.help_text = password.help_text.format(reverse('password_change'))
def clean_password(self):
# Regardless of what the user provides, return the initial value.
# This is done here, rather than on the field, because the
# field does not have access to the initial value
return self.initial.get('password')
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['daily_calories_demand', 'daily_fat_demand', 'daily_carbohydrate_demand',
'daily_sugar_demand', 'daily_roughage_demand', 'daily_protein_demand']