Files
VacatureRadar/apps/sources/forms.py
T
2026-07-22 05:12:07 +02:00

83 lines
2.6 KiB
Python

from __future__ import annotations
from django import forms
from .models import MailboxConnection
class MailboxConnectionForm(forms.ModelForm):
password = forms.CharField(
required=False,
label="App-wachtwoord",
help_text="Laat leeg bij wijzigen om het bestaande app-wachtwoord te behouden.",
widget=forms.PasswordInput(
attrs={"autocomplete": "new-password", "placeholder": "App-wachtwoord"},
render_value=False,
),
)
class Meta:
model = MailboxConnection
fields = (
"platform",
"provider",
"custom_host",
"port",
"username",
"mailbox",
"poll_interval_minutes",
"enabled",
)
labels = {
"platform": "Vacatureplatform",
"provider": "Mailboxprovider",
"custom_host": "Aangepaste IMAP-host",
"port": "IMAP-poort",
"username": "Mailboxaccount",
"mailbox": "Map",
"poll_interval_minutes": "Controlefrequentie",
"enabled": "Automatisch synchroniseren",
}
widgets = {
"username": forms.EmailInput(attrs={"autocomplete": "username"}),
"custom_host": forms.TextInput(
attrs={"autocomplete": "off", "placeholder": "imap.provider.be"}
),
"mailbox": forms.TextInput(attrs={"autocomplete": "off"}),
}
def clean(self):
data = super().clean()
if data.get("provider") != MailboxConnection.Provider.CUSTOM:
data["custom_host"] = ""
if not self.instance.pk and not data.get("password"):
self.add_error("password", "Een app-wachtwoord is verplicht voor een nieuwe koppeling.")
return data
class ManualImportForm(forms.Form):
source_url = forms.URLField(
required=False,
label="Vacature-URL",
max_length=1000,
widget=forms.URLInput(attrs={"autocomplete": "off"}),
)
pasted_text = forms.CharField(
required=False,
label="Tekst plakken",
widget=forms.Textarea(
attrs={
"rows": 6,
"placeholder": "Plak hier de vacaturetekst of relevante pagina-inhoud.",
}
),
)
def clean(self):
data = super().clean()
source_url = (data.get("source_url") or "").strip()
pasted_text = (data.get("pasted_text") or "").strip()
if not source_url and not pasted_text:
raise forms.ValidationError("Vul een URL of een tekstfragment in.")
return {"source_url": source_url, "pasted_text": pasted_text}