38 lines
2.0 KiB
Python
38 lines
2.0 KiB
Python
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
|