Files
VacatureRadar/apps/profiles/forms.py
T
Jens b8091e59bd
deploy / deploy (push) Canceled after 0s
Initial deploy setup
2026-07-21 14:00:00 +02:00

81 lines
3.1 KiB
Python

from __future__ import annotations
from django import forms
from .models import SearchProfile
class SearchProfileForm(forms.ModelForm):
desired_titles_text = forms.CharField(
label="Gewenste functietitels",
required=False,
widget=forms.Textarea(attrs={"rows": 4, "placeholder": "Eén titel per regel"}),
)
excluded_titles_text = forms.CharField(
label="Uitgesloten titelwoorden",
required=False,
widget=forms.Textarea(attrs={"rows": 3, "placeholder": "Eén term per regel"}),
)
desired_skills_text = forms.CharField(
label="Gewenste skills",
required=False,
widget=forms.Textarea(attrs={"rows": 4, "placeholder": "Eén skill per regel"}),
)
excluded_skills_text = forms.CharField(
label="Uitgesloten skills",
required=False,
widget=forms.Textarea(attrs={"rows": 3, "placeholder": "Eén skill per regel"}),
)
class Meta:
model = SearchProfile
fields = [
"name",
"is_active",
"home_postal_code",
"home_municipality",
"home_latitude",
"home_longitude",
"max_distance_km",
"allowed_employment_types",
"preferred_workplace",
"preferred_regions",
"excluded_regions",
"recommendation_threshold",
"top_match_threshold",
"digest_time",
"learning_enabled",
]
widgets = {
"allowed_employment_types": forms.TextInput(
attrs={"placeholder": '["full_time", "part_time"]'}
),
"preferred_workplace": forms.TextInput(attrs={"placeholder": '["hybrid", "on_site"]'}),
"preferred_regions": forms.TextInput(attrs={"placeholder": '["Limburg"]'}),
"excluded_regions": forms.TextInput(attrs={"placeholder": '["Brussel"]'}),
"digest_time": forms.TimeInput(attrs={"type": "time"}),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance and self.instance.pk:
self.fields["desired_titles_text"].initial = "\n".join(self.instance.desired_titles)
self.fields["excluded_titles_text"].initial = "\n".join(self.instance.excluded_titles)
self.fields["desired_skills_text"].initial = "\n".join(self.instance.desired_skills)
self.fields["excluded_skills_text"].initial = "\n".join(self.instance.excluded_skills)
@staticmethod
def _lines(value: str) -> list[str]:
return [line.strip() for line in value.splitlines() if line.strip()]
def save(self, commit=True):
instance = super().save(commit=False)
instance.desired_titles = self._lines(self.cleaned_data["desired_titles_text"])
instance.excluded_titles = self._lines(self.cleaned_data["excluded_titles_text"])
instance.desired_skills = self._lines(self.cleaned_data["desired_skills_text"])
instance.excluded_skills = self._lines(self.cleaned_data["excluded_skills_text"])
if commit:
instance.save()
self.save_m2m()
return instance