furry/products/forms.py

440 lines
18 KiB
Python

<<<<<<< HEAD
from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, PasswordChangeForm
from django.contrib.auth.models import User
from .models import Order, Product, Review, UserProfile, ContactMessage, CustomOrder, OrderProgress
class OrderForm(forms.ModelForm):
class Meta:
model = Order
fields = ['full_name', 'email', 'address', 'phone']
widgets = {
'full_name': forms.TextInput(attrs={'class': 'form-control'}),
'email': forms.EmailInput(attrs={'class': 'form-control'}),
'address': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
'phone': forms.TextInput(attrs={'class': 'form-control'}),
}
labels = {
'full_name': 'Vollständiger Name',
'email': 'E-Mail-Adresse',
'address': 'Lieferadresse',
'phone': 'Telefonnummer',
}
class CustomUserCreationForm(UserCreationForm):
email = forms.EmailField(required=True, widget=forms.EmailInput(attrs={'class': 'form-control'}))
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'form-control'
self.fields['username'].label = 'Benutzername'
self.fields['password1'].label = 'Passwort'
self.fields['password2'].label = 'Passwort bestätigen'
class CustomAuthenticationForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'form-control'
self.fields['username'].label = 'Benutzername'
self.fields['password'].label = 'Passwort'
class ReviewForm(forms.ModelForm):
class Meta:
model = Review
fields = ['rating', 'comment']
widgets = {
'rating': forms.Select(attrs={'class': 'form-control'}),
'comment': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
}
labels = {
'rating': 'Bewertung',
'comment': 'Kommentar',
}
class UserProfileForm(forms.ModelForm):
first_name = forms.CharField(max_length=30, required=False, label='Vorname')
last_name = forms.CharField(max_length=30, required=False, label='Nachname')
email = forms.EmailField(required=True, label='E-Mail-Adresse')
class Meta:
model = UserProfile
fields = ['phone', 'address', 'default_shipping_address', 'newsletter']
labels = {
'phone': 'Telefonnummer',
'address': 'Adresse',
'default_shipping_address': 'Standard-Lieferadresse',
'newsletter': 'Newsletter abonnieren',
}
widgets = {
'address': forms.Textarea(attrs={'rows': 3}),
'default_shipping_address': forms.Textarea(attrs={'rows': 3}),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance.user:
self.fields['first_name'].initial = self.instance.user.first_name
self.fields['last_name'].initial = self.instance.user.last_name
self.fields['email'].initial = self.instance.user.email
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'form-control'
def save(self, commit=True):
profile = super().save(commit=False)
if commit:
user = profile.user
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
user.save()
profile.save()
return profile
class ContactForm(forms.ModelForm):
class Meta:
model = ContactMessage
fields = ['name', 'email', 'category', 'order_number', 'subject', 'message']
widgets = {
'name': forms.TextInput(attrs={'class': 'form-control'}),
'email': forms.EmailInput(attrs={'class': 'form-control'}),
'category': forms.Select(attrs={'class': 'form-control'}),
'order_number': forms.TextInput(attrs={'class': 'form-control'}),
'subject': forms.TextInput(attrs={'class': 'form-control'}),
'message': forms.Textarea(attrs={'class': 'form-control', 'rows': 5}),
}
labels = {
'name': 'Name',
'email': 'E-Mail-Adresse',
'category': 'Kategorie',
'order_number': 'Bestellnummer (optional)',
'subject': 'Betreff',
'message': 'Ihre Nachricht',
}
def __init__(self, *args, user=None, **kwargs):
super().__init__(*args, **kwargs)
if user and user.is_authenticated:
self.fields['name'].initial = user.get_full_name() or user.username
self.fields['email'].initial = user.email
class CustomOrderForm(forms.ModelForm):
class Meta:
model = CustomOrder
fields = [
'fursuit_type', 'style', 'character_name',
'character_description', 'reference_images',
'special_requests', 'measurements',
'color_preferences', 'budget_range',
'deadline_request'
]
widgets = {
'fursuit_type': forms.Select(attrs={'class': 'form-select'}),
'style': forms.Select(attrs={'class': 'form-select'}),
'character_name': forms.TextInput(attrs={'class': 'form-control'}),
'character_description': forms.Textarea(attrs={
'class': 'form-control',
'rows': 4,
'placeholder': 'Beschreiben Sie Ihren Character so detailliert wie möglich...'
}),
'special_requests': forms.Textarea(attrs={
'class': 'form-control',
'rows': 3,
'placeholder': 'Besondere Wünsche oder Anforderungen...'
}),
'measurements': forms.Textarea(attrs={
'class': 'form-control',
'rows': 4,
'placeholder': 'Bitte geben Sie alle relevanten Maße an (Kopfumfang, Körpergröße, etc.)'
}),
'color_preferences': forms.Textarea(attrs={
'class': 'form-control',
'rows': 3,
'placeholder': 'Beschreiben Sie die gewünschten Farben und Farbkombinationen...'
}),
'budget_range': forms.TextInput(attrs={
'class': 'form-control',
'placeholder': 'z.B. 2000-3000€'
}),
'deadline_request': forms.DateInput(attrs={
'class': 'form-control',
'type': 'date'
}),
'reference_images': forms.FileInput(attrs={
'class': 'form-control',
'accept': 'image/*'
})
}
labels = {
'fursuit_type': 'Art des Fursuits',
'style': 'Gewünschter Stil',
'character_name': 'Name des Characters',
'character_description': 'Beschreibung des Characters',
'reference_images': 'Referenzbilder',
'special_requests': 'Besondere Wünsche',
'measurements': 'Maße',
'color_preferences': 'Farbwünsche',
'budget_range': 'Budget-Rahmen',
'deadline_request': 'Gewünschter Fertigstellungstermin'
}
help_texts = {
'character_description': 'Je detaillierter die Beschreibung, desto besser können wir Ihre Vision umsetzen.',
'reference_images': 'Laden Sie bis zu 5 Referenzbilder hoch (max. 5MB pro Bild)',
'measurements': 'Genaue Maße sind wichtig für eine perfekte Passform.',
'budget_range': 'Geben Sie einen Bereich an, in dem Sie sich preislich bewegen möchten.',
'deadline_request': 'Optional: Wenn Sie einen bestimmten Termin im Auge haben.'
}
class OrderProgressForm(forms.ModelForm):
class Meta:
model = OrderProgress
fields = ['stage', 'description', 'image', 'completed']
widgets = {
'stage': forms.Select(attrs={'class': 'form-select'}),
'description': forms.Textarea(attrs={
'class': 'form-control',
'rows': 3,
'placeholder': 'Beschreiben Sie den aktuellen Fortschritt...'
}),
'image': forms.FileInput(attrs={
'class': 'form-control',
'accept': 'image/*'
}),
'completed': forms.CheckboxInput(attrs={'class': 'form-check-input'})
}
labels = {
'stage': 'Arbeitsschritt',
'description': 'Beschreibung des Fortschritts',
'image': 'Foto des Fortschritts',
'completed': 'Abgeschlossen'
}
help_texts = {
'description': 'Beschreiben Sie detailliert, was in diesem Schritt gemacht wurde.',
'image': 'Fügen Sie ein Foto hinzu, um den Fortschritt zu dokumentieren.',
'completed': 'Markieren Sie diesen Schritt als abgeschlossen, wenn er fertig ist.'
=======
from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, PasswordChangeForm
from django.contrib.auth.models import User
from .models import Order, Product, Review, UserProfile, ContactMessage, CustomOrder, OrderProgress
class OrderForm(forms.ModelForm):
class Meta:
model = Order
fields = ['full_name', 'email', 'address', 'phone']
widgets = {
'full_name': forms.TextInput(attrs={'class': 'form-control'}),
'email': forms.EmailInput(attrs={'class': 'form-control'}),
'address': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
'phone': forms.TextInput(attrs={'class': 'form-control'}),
}
labels = {
'full_name': 'Vollständiger Name',
'email': 'E-Mail-Adresse',
'address': 'Lieferadresse',
'phone': 'Telefonnummer',
}
class CustomUserCreationForm(UserCreationForm):
email = forms.EmailField(required=True, widget=forms.EmailInput(attrs={'class': 'form-control'}))
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'form-control'
self.fields['username'].label = 'Benutzername'
self.fields['password1'].label = 'Passwort'
self.fields['password2'].label = 'Passwort bestätigen'
class CustomAuthenticationForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'form-control'
self.fields['username'].label = 'Benutzername'
self.fields['password'].label = 'Passwort'
class ReviewForm(forms.ModelForm):
class Meta:
model = Review
fields = ['rating', 'comment']
widgets = {
'rating': forms.Select(attrs={'class': 'form-control'}),
'comment': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
}
labels = {
'rating': 'Bewertung',
'comment': 'Kommentar',
}
class UserProfileForm(forms.ModelForm):
first_name = forms.CharField(max_length=30, required=False, label='Vorname')
last_name = forms.CharField(max_length=30, required=False, label='Nachname')
email = forms.EmailField(required=True, label='E-Mail-Adresse')
class Meta:
model = UserProfile
fields = ['phone', 'address', 'default_shipping_address', 'newsletter']
labels = {
'phone': 'Telefonnummer',
'address': 'Adresse',
'default_shipping_address': 'Standard-Lieferadresse',
'newsletter': 'Newsletter abonnieren',
}
widgets = {
'address': forms.Textarea(attrs={'rows': 3}),
'default_shipping_address': forms.Textarea(attrs={'rows': 3}),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance.user:
self.fields['first_name'].initial = self.instance.user.first_name
self.fields['last_name'].initial = self.instance.user.last_name
self.fields['email'].initial = self.instance.user.email
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'form-control'
def save(self, commit=True):
profile = super().save(commit=False)
if commit:
user = profile.user
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
user.save()
profile.save()
return profile
class ContactForm(forms.ModelForm):
class Meta:
model = ContactMessage
fields = ['name', 'email', 'category', 'order_number', 'subject', 'message']
widgets = {
'name': forms.TextInput(attrs={'class': 'form-control'}),
'email': forms.EmailInput(attrs={'class': 'form-control'}),
'category': forms.Select(attrs={'class': 'form-control'}),
'order_number': forms.TextInput(attrs={'class': 'form-control'}),
'subject': forms.TextInput(attrs={'class': 'form-control'}),
'message': forms.Textarea(attrs={'class': 'form-control', 'rows': 5}),
}
labels = {
'name': 'Name',
'email': 'E-Mail-Adresse',
'category': 'Kategorie',
'order_number': 'Bestellnummer (optional)',
'subject': 'Betreff',
'message': 'Ihre Nachricht',
}
def __init__(self, *args, user=None, **kwargs):
super().__init__(*args, **kwargs)
if user and user.is_authenticated:
self.fields['name'].initial = user.get_full_name() or user.username
self.fields['email'].initial = user.email
class CustomOrderForm(forms.ModelForm):
class Meta:
model = CustomOrder
fields = [
'fursuit_type', 'style', 'character_name',
'character_description', 'reference_images',
'special_requests', 'measurements',
'color_preferences', 'budget_range',
'deadline_request'
]
widgets = {
'fursuit_type': forms.Select(attrs={'class': 'form-select'}),
'style': forms.Select(attrs={'class': 'form-select'}),
'character_name': forms.TextInput(attrs={'class': 'form-control'}),
'character_description': forms.Textarea(attrs={
'class': 'form-control',
'rows': 4,
'placeholder': 'Beschreiben Sie Ihren Character so detailliert wie möglich...'
}),
'special_requests': forms.Textarea(attrs={
'class': 'form-control',
'rows': 3,
'placeholder': 'Besondere Wünsche oder Anforderungen...'
}),
'measurements': forms.Textarea(attrs={
'class': 'form-control',
'rows': 4,
'placeholder': 'Bitte geben Sie alle relevanten Maße an (Kopfumfang, Körpergröße, etc.)'
}),
'color_preferences': forms.Textarea(attrs={
'class': 'form-control',
'rows': 3,
'placeholder': 'Beschreiben Sie die gewünschten Farben und Farbkombinationen...'
}),
'budget_range': forms.TextInput(attrs={
'class': 'form-control',
'placeholder': 'z.B. 2000-3000€'
}),
'deadline_request': forms.DateInput(attrs={
'class': 'form-control',
'type': 'date'
}),
'reference_images': forms.FileInput(attrs={
'class': 'form-control',
'accept': 'image/*'
})
}
labels = {
'fursuit_type': 'Art des Fursuits',
'style': 'Gewünschter Stil',
'character_name': 'Name des Characters',
'character_description': 'Beschreibung des Characters',
'reference_images': 'Referenzbilder',
'special_requests': 'Besondere Wünsche',
'measurements': 'Maße',
'color_preferences': 'Farbwünsche',
'budget_range': 'Budget-Rahmen',
'deadline_request': 'Gewünschter Fertigstellungstermin'
}
help_texts = {
'character_description': 'Je detaillierter die Beschreibung, desto besser können wir Ihre Vision umsetzen.',
'reference_images': 'Laden Sie bis zu 5 Referenzbilder hoch (max. 5MB pro Bild)',
'measurements': 'Genaue Maße sind wichtig für eine perfekte Passform.',
'budget_range': 'Geben Sie einen Bereich an, in dem Sie sich preislich bewegen möchten.',
'deadline_request': 'Optional: Wenn Sie einen bestimmten Termin im Auge haben.'
}
class OrderProgressForm(forms.ModelForm):
class Meta:
model = OrderProgress
fields = ['stage', 'description', 'image', 'completed']
widgets = {
'stage': forms.Select(attrs={'class': 'form-select'}),
'description': forms.Textarea(attrs={
'class': 'form-control',
'rows': 3,
'placeholder': 'Beschreiben Sie den aktuellen Fortschritt...'
}),
'image': forms.FileInput(attrs={
'class': 'form-control',
'accept': 'image/*'
}),
'completed': forms.CheckboxInput(attrs={'class': 'form-check-input'})
}
labels = {
'stage': 'Arbeitsschritt',
'description': 'Beschreibung des Fortschritts',
'image': 'Foto des Fortschritts',
'completed': 'Abgeschlossen'
}
help_texts = {
'description': 'Beschreiben Sie detailliert, was in diesem Schritt gemacht wurde.',
'image': 'Fügen Sie ein Foto hinzu, um den Fortschritt zu dokumentieren.',
'completed': 'Markieren Sie diesen Schritt als abgeschlossen, wenn er fertig ist.'
>>>>>>> 5b9b867963eca600ed64b617dc2dc86c30dbd9cb
}