317 lines
11 KiB
Python
317 lines
11 KiB
Python
from __future__ import annotations
|
|
|
|
from collections.abc import Iterable, Iterator, Sequence
|
|
|
|
Choice = tuple[str, str]
|
|
ChoiceGroup = tuple[str, tuple[Choice, ...]]
|
|
|
|
|
|
TITLE_CHOICES: tuple[ChoiceGroup, ...] = (
|
|
(
|
|
"Field service & support",
|
|
(
|
|
("it field engineer", "IT Field Engineer"),
|
|
("field service engineer", "Field Service Engineer"),
|
|
("it engineer", "IT Engineer"),
|
|
("it support engineer", "IT Support Engineer"),
|
|
("support engineer", "Support Engineer"),
|
|
("onsite support engineer", "On-site Support Engineer"),
|
|
("service desk engineer", "Service Desk Engineer"),
|
|
("technical support engineer", "Technical Support Engineer"),
|
|
("it technician", "IT Technician"),
|
|
("pc technician", "PC Technician"),
|
|
),
|
|
),
|
|
(
|
|
"Systemen & infrastructuur",
|
|
(
|
|
("system engineer", "System Engineer"),
|
|
("system network engineer", "System & Network Engineer"),
|
|
("infrastructure engineer", "Infrastructure Engineer"),
|
|
("system administrator", "System Administrator"),
|
|
("systeembeheerder", "Systeembeheerder"),
|
|
("network engineer", "Network Engineer"),
|
|
("network administrator", "Network Administrator"),
|
|
("netwerkbeheerder", "Netwerkbeheerder"),
|
|
("infrastructure consultant", "Infrastructure Consultant"),
|
|
("implementation engineer", "Implementation Engineer"),
|
|
),
|
|
),
|
|
(
|
|
"Modern Workplace & endpoint",
|
|
(
|
|
("workplace engineer", "Workplace Engineer"),
|
|
("modern workplace engineer", "Modern Workplace Engineer"),
|
|
("microsoft 365 engineer", "Microsoft 365 Engineer"),
|
|
("microsoft 365 consultant", "Microsoft 365 Consultant"),
|
|
("modern workplace consultant", "Modern Workplace Consultant"),
|
|
("endpoint engineer", "Endpoint Engineer"),
|
|
("intune engineer", "Intune Engineer"),
|
|
),
|
|
),
|
|
(
|
|
"Andere IT-richtingen",
|
|
(
|
|
("cloud engineer", "Cloud Engineer"),
|
|
("devops engineer", "DevOps Engineer"),
|
|
("security engineer", "Security Engineer"),
|
|
("platform engineer", "Platform Engineer"),
|
|
("software engineer", "Software Engineer"),
|
|
("data engineer", "Data Engineer"),
|
|
("solution architect", "Solution Architect"),
|
|
("project manager", "IT-projectmanager"),
|
|
),
|
|
),
|
|
)
|
|
|
|
EXCLUDED_TITLE_CHOICES: tuple[ChoiceGroup, ...] = (
|
|
(
|
|
"Commercieel & werving",
|
|
(
|
|
("sales", "Sales"),
|
|
("recruiter", "Recruiter"),
|
|
("account manager", "Accountmanager"),
|
|
("business developer", "Business Developer"),
|
|
("callcenter", "Callcenter"),
|
|
),
|
|
),
|
|
(
|
|
"Software, data & analyse",
|
|
(
|
|
("software developer", "Software Developer"),
|
|
("software engineer", "Software Engineer"),
|
|
("web developer", "Web Developer"),
|
|
("developer", "Developmentfuncties (breed)"),
|
|
("software", "Softwarefuncties (breed)"),
|
|
("backend", "Backendfuncties"),
|
|
("frontend", "Frontendfuncties"),
|
|
("php", "PHP-ontwikkeling"),
|
|
("data engineer", "Data Engineer"),
|
|
("data scientist", "Data Scientist"),
|
|
("data", "Datafuncties (breed)"),
|
|
("ai engineer", "AI Engineer"),
|
|
("ai", "AI-functies (breed)"),
|
|
("machine learning", "Machine Learning"),
|
|
("functional analyst", "Functional Analyst"),
|
|
("functioneel analist", "Functioneel Analist"),
|
|
("business analyst", "Business Analyst"),
|
|
),
|
|
),
|
|
(
|
|
"Management & starters",
|
|
(
|
|
("product owner", "Product Owner"),
|
|
("project manager", "Projectmanager"),
|
|
("architect", "Architectrollen"),
|
|
("service delivery manager", "Service Delivery Manager"),
|
|
("team lead", "Teamlead"),
|
|
("head of", "Head-of-rollen"),
|
|
("procurement", "Procurement"),
|
|
("stage", "Stage"),
|
|
("internship", "Internship"),
|
|
("student", "Studentenjob"),
|
|
),
|
|
),
|
|
(
|
|
"Niet-IT-techniek",
|
|
(
|
|
("electromechanical", "Elektromechanica"),
|
|
("maintenance technician", "Onderhoudstechnieker"),
|
|
("process engineer", "Process Engineer"),
|
|
("automation engineer", "Automation Engineer"),
|
|
),
|
|
),
|
|
(
|
|
"Onderzoek & beeldverwerking",
|
|
(
|
|
("research", "Onderzoeksfuncties"),
|
|
("scientist", "Scientist"),
|
|
("image processing", "Beeldverwerking"),
|
|
("remote sensing", "Remote sensing"),
|
|
),
|
|
),
|
|
(
|
|
"Cloud & businessplatformen",
|
|
(
|
|
("cloud", "Cloudfuncties (breed)"),
|
|
("devops", "DevOps"),
|
|
("azure consultant", "Azure Consultant"),
|
|
("sap", "SAP"),
|
|
("power platform", "Power Platform"),
|
|
),
|
|
),
|
|
(
|
|
"Onderwijs",
|
|
(
|
|
("lecturer", "Lecturer"),
|
|
("lector", "Lector"),
|
|
("docent", "Docent"),
|
|
("gastdocent", "Gastdocent"),
|
|
),
|
|
),
|
|
)
|
|
|
|
SKILL_CHOICES: tuple[ChoiceGroup, ...] = (
|
|
(
|
|
"Field service & uitvoering",
|
|
(
|
|
("troubleshooting", "Troubleshooting"),
|
|
("onsite support", "On-site support"),
|
|
("hardware", "Hardware & randapparatuur"),
|
|
("installations", "Installaties & roll-outs"),
|
|
("migrations", "Migraties"),
|
|
("technical documentation", "Technische documentatie"),
|
|
("customer support", "Klantondersteuning"),
|
|
("second line support", "Tweede- en derdelijnssupport"),
|
|
("customer experience", "Klanttevredenheid / CSAT"),
|
|
),
|
|
),
|
|
(
|
|
"Microsoft & endpoint",
|
|
(
|
|
("microsoft 365", "Microsoft 365"),
|
|
("exchange online", "Exchange Online"),
|
|
("sharepoint", "SharePoint"),
|
|
("microsoft teams", "Microsoft Teams"),
|
|
("entra id", "Entra ID"),
|
|
("intune", "Microsoft Intune"),
|
|
("autopilot", "Windows Autopilot"),
|
|
("windows server", "Windows Server"),
|
|
("active directory", "Active Directory"),
|
|
("group policy", "Group Policy / GPO"),
|
|
("dynamics 365", "Microsoft Dynamics 365"),
|
|
("microsoft copilot", "Microsoft Copilot"),
|
|
("microsoft defender", "Microsoft Defender"),
|
|
("microsoft sentinel", "Microsoft Sentinel"),
|
|
("conditional access", "Conditional Access"),
|
|
),
|
|
),
|
|
(
|
|
"Netwerk & security",
|
|
(
|
|
("networking", "Netwerken"),
|
|
("tcp/ip", "TCP/IP"),
|
|
("vlan", "VLAN"),
|
|
("vpn", "VPN"),
|
|
("dhcp", "DHCP"),
|
|
("dns", "DNS"),
|
|
("firewalls", "Firewalls"),
|
|
("watchguard", "WatchGuard"),
|
|
("cisco", "Cisco"),
|
|
("ubiquiti", "Ubiquiti"),
|
|
("wi-fi", "Wi-Fi"),
|
|
("routing", "Routing"),
|
|
("switching", "Switching"),
|
|
("sd-wan", "SD-WAN"),
|
|
("fortinet", "Fortinet / FortiGate"),
|
|
("palo alto", "Palo Alto Networks"),
|
|
("aruba", "HPE Aruba"),
|
|
("meraki", "Cisco Meraki"),
|
|
("sophos", "Sophos"),
|
|
("zero trust", "Zero Trust"),
|
|
),
|
|
),
|
|
(
|
|
"Back-up & monitoring",
|
|
(
|
|
("backup and restore", "Back-up & restore"),
|
|
("veeam", "Veeam"),
|
|
("windows server backup", "Windows Server Backup"),
|
|
("synology", "Synology"),
|
|
("zabbix", "Zabbix"),
|
|
("monitoring", "Infrastructuurmonitoring"),
|
|
("observability", "Observability"),
|
|
("high availability", "High availability"),
|
|
("disaster recovery", "Disaster recovery"),
|
|
),
|
|
),
|
|
(
|
|
"Virtualisatie & platform",
|
|
(
|
|
("vmware", "VMware"),
|
|
("proxmox", "Proxmox"),
|
|
("hyper-v", "Hyper-V"),
|
|
("docker", "Docker"),
|
|
("azure", "Microsoft Azure"),
|
|
("aws", "AWS"),
|
|
("linux", "Linux"),
|
|
("kubernetes", "Kubernetes"),
|
|
("terraform", "Terraform"),
|
|
("ci/cd", "CI/CD"),
|
|
("deployment", "Deployment & uitrol"),
|
|
("reliability", "Platform reliability"),
|
|
("scalability", "Schaalbaarheid"),
|
|
),
|
|
),
|
|
(
|
|
"VoIP & telefonie",
|
|
(
|
|
("voip", "VoIP"),
|
|
("3cx", "3CX"),
|
|
("innovaphone", "Innovaphone"),
|
|
("teams telephony", "Teams-telefonie"),
|
|
("yealink", "Yealink"),
|
|
("snom", "Snom"),
|
|
),
|
|
),
|
|
(
|
|
"Automation & scripting",
|
|
(
|
|
("powershell", "PowerShell"),
|
|
("bash", "Bash"),
|
|
("python", "Python"),
|
|
("c#", "C#"),
|
|
),
|
|
),
|
|
(
|
|
"IT-servicemanagement",
|
|
(
|
|
("itil", "ITIL / IT-servicemanagement"),
|
|
("incident management", "Incidentmanagement"),
|
|
("problem management", "Problemmanagement"),
|
|
("change management", "Changemanagement"),
|
|
("servicenow", "ServiceNow"),
|
|
("jira service management", "Jira Service Management"),
|
|
),
|
|
),
|
|
(
|
|
"Digitale werkplek & adoptie",
|
|
(
|
|
("digital workplace", "Digital Workplace"),
|
|
("m365 governance", "Microsoft 365-governance"),
|
|
("document management", "Documentmanagement"),
|
|
("data governance", "Datagovernance"),
|
|
("user adoption", "Gebruikersadoptie"),
|
|
("training and workshops", "Training & workshops"),
|
|
),
|
|
),
|
|
)
|
|
|
|
EXCLUDED_SKILL_CHOICES: tuple[ChoiceGroup, ...] = (
|
|
(
|
|
"Commerciële voorwaarden",
|
|
(
|
|
("cold calling", "Cold calling"),
|
|
("door to door", "Deur-aan-deurverkoop"),
|
|
("commission only", "Alleen commissieloon"),
|
|
),
|
|
),
|
|
(
|
|
"Werkregeling",
|
|
(
|
|
("night shift", "Nachtwerk"),
|
|
("rotating shifts", "Ploegendienst"),
|
|
("on-call duty", "Structurele wachtdienst"),
|
|
),
|
|
),
|
|
)
|
|
|
|
|
|
def iter_choices(choices: Iterable[Choice | tuple[str, Sequence[Choice]]]) -> Iterator[Choice]:
|
|
"""Flatten Django optgroups while retaining compatibility with legacy flat choices."""
|
|
for value, label_or_choices in choices:
|
|
if isinstance(label_or_choices, tuple | list):
|
|
yield from iter_choices(label_or_choices)
|
|
else:
|
|
yield str(value), str(label_or_choices)
|