<<<<<<< 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 }