Files
OSINT/reports/forms.py
Iliyan Angelov ed94dd22dd update
2025-11-26 22:32:20 +02:00

125 lines
5.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
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': 'Ако имате документи, снимки или друга информация, която подкрепя вашата заявка, моля опишете я тук.',
}