Files
Boris 457b8c8443
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
added user profile page
2026-04-02 20:06:38 +03:00

70 lines
2.1 KiB
Python

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from .models import Item, UserProfile
class SignupForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
class ItemForm(forms.ModelForm):
progress_percent = forms.FloatField(
min_value=0,
max_value=100,
initial=0,
widget=forms.NumberInput(attrs={
'type': 'range',
'min': '0',
'max': '100',
'step': '1',
}),
)
class Meta:
model = Item
fields = [
'category', 'name', 'progress_percent', 'favorite',
'hours_played', 'total_hours',
'pages_read', 'total_pages',
'watched', 'duration_minutes',
]
widgets = {
'hours_played': forms.NumberInput(attrs={'step': '0.5', 'min': '0'}),
'total_hours': forms.NumberInput(attrs={'step': '0.5', 'min': '0'}),
'pages_read': forms.NumberInput(attrs={'min': '0'}),
'total_pages': forms.NumberInput(attrs={'min': '0'}),
'duration_minutes': forms.NumberInput(attrs={'min': '0'}),
}
def clean(self):
cleaned_data = super().clean()
category = cleaned_data.get('category')
if category != Item.GAMES:
cleaned_data['hours_played'] = None
cleaned_data['total_hours'] = None
if category != Item.BOOKS:
cleaned_data['pages_read'] = None
cleaned_data['total_pages'] = None
if category != Item.FILMS:
cleaned_data['watched'] = None
cleaned_data['duration_minutes'] = None
return cleaned_data
class ProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ['display_name', 'theme']
widgets = {
'display_name': forms.TextInput(attrs={'placeholder': 'Your full name (optional)'}),
}
labels = {
'display_name': 'Display name',
'theme': 'Theme',
}