""" Forms for reports app. """ from django import forms from accounts.form_mixins import BotProtectionMixin, BrowserFingerprintMixin, RateLimitMixin from .models import ScamReport, TakedownRequest class ScamReportForm(RateLimitMixin, forms.ModelForm): """Form for creating/editing scam reports.""" class Meta: model = ScamReport fields = [ 'title', 'description', 'scam_type', 'reported_url', 'reported_email', 'reported_phone', 'reported_company', 'tags', 'is_anonymous' ] widgets = { 'title': forms.TextInput(attrs={'class': 'form-control'}), 'description': forms.Textarea(attrs={'class': 'form-control', 'rows': 8}), 'scam_type': forms.Select(attrs={'class': 'form-control'}), 'reported_url': forms.URLInput(attrs={'class': 'form-control'}), 'reported_email': forms.EmailInput(attrs={'class': 'form-control'}), 'reported_phone': forms.TextInput(attrs={'class': 'form-control'}), 'reported_company': forms.TextInput(attrs={'class': 'form-control'}), 'tags': forms.SelectMultiple(attrs={'class': 'form-control'}), 'is_anonymous': forms.CheckboxInput(attrs={'class': 'form-check-input'}), } class ContactForm(BotProtectionMixin, BrowserFingerprintMixin, forms.Form): """Contact form for users to reach out.""" name = forms.CharField( max_length=200, required=True, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Вашето име' }), label='Име *' ) email = forms.EmailField( required=True, widget=forms.EmailInput(attrs={ 'class': 'form-control', 'placeholder': 'your.email@example.com' }), label='Имейл *' ) subject = forms.CharField( max_length=200, required=True, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Тема на съобщението' }), label='Тема *' ) message = forms.CharField( required=True, widget=forms.Textarea(attrs={ 'class': 'form-control', 'rows': 8, 'placeholder': 'Вашето съобщение...' }), label='Съобщение *' ) inquiry_type = forms.ChoiceField( choices=[ ('general', 'Общ въпрос'), ('report_issue', 'Проблем с доклад'), ('technical', 'Техническа поддръжка'), ('feedback', 'Обратна връзка'), ('other', 'Друго'), ], required=True, widget=forms.Select(attrs={ 'class': 'form-control' }), label='Тип заявка *' ) class TakedownRequestForm(BotProtectionMixin, BrowserFingerprintMixin, forms.ModelForm): """Form for requesting takedown of a scam report.""" class Meta: model = TakedownRequest fields = ['requester_name', 'requester_email', 'requester_phone', 'reason', 'evidence'] widgets = { 'requester_name': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Вашето име' }), 'requester_email': forms.EmailInput(attrs={ 'class': 'form-control', 'placeholder': 'your.email@example.com' }), 'requester_phone': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': '+359 XXX XXX XXX (незадължително)' }), 'reason': forms.Textarea(attrs={ 'class': 'form-control', 'rows': 6, 'placeholder': 'Обяснете защо смятате, че докладът трябва да бъде премахнат...' }), 'evidence': forms.Textarea(attrs={ 'class': 'form-control', 'rows': 6, 'placeholder': 'Предоставете доказателства или допълнителна информация (незадължително)...' }), } labels = { 'requester_name': 'Име *', 'requester_email': 'Имейл *', 'requester_phone': 'Телефон', 'reason': 'Причина за заявката *', 'evidence': 'Доказателства / Допълнителна информация', } help_texts = { 'reason': 'Моля, обяснете подробно защо смятате, че информацията в доклада е невярна или несправедлива.', 'evidence': 'Ако имате документи, снимки или друга информация, която подкрепя вашата заявка, моля опишете я тук.', }