from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm from .models import Product, ProductImage, Profile class ProductForm(forms.ModelForm): class Meta: model = Product fields = ['category', 'name', 'description', 'price', 'stock', 'image', 'is_available'] widgets = { 'category': forms.Select(attrs={'class': 'form-select'}), 'name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Product Name'}), 'description': forms.Textarea(attrs={'class': 'form-control', 'rows': 4, 'placeholder': 'Detailed description of your product...'}), 'price': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': '0.00'}), 'stock': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': '0'}), 'image': forms.ClearableFileInput(attrs={'class': 'form-control'}), 'is_available': forms.CheckboxInput(attrs={'class': 'form-check-input'}), } class SignUpForm(UserCreationForm): email = forms.EmailField(required=True, widget=forms.EmailInput(attrs={'class': 'form-control', 'placeholder': 'Email Address'})) first_name = forms.CharField(max_length=30, required=True, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'First Name'})) last_name = forms.CharField(max_length=30, required=True, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Last Name'})) class Meta(UserCreationForm.Meta): model = User fields = UserCreationForm.Meta.fields + ('email', 'first_name', 'last_name') def save(self, commit=True): user = super().save(commit=False) user.email = self.cleaned_data["email"] user.first_name = self.cleaned_data["first_name"] user.last_name = self.cleaned_data["last_name"] if commit: user.save() Profile.objects.get_or_create(user=user) return user