Harden public demo for 0.3.16
This commit is contained in:
@@ -122,11 +122,10 @@ def demo_environment_seeded(user) -> bool:
|
||||
|
||||
|
||||
def seed_demo_environment(user) -> None:
|
||||
"""Maak (idempotent) een fictieve demo-omgeving voor ``user``."""
|
||||
if demo_environment_seeded(user):
|
||||
return
|
||||
|
||||
"""Maak of herstel een fictieve, tijdsbestendige demo-omgeving voor ``user``."""
|
||||
from apps.jobs.models import Application, Employer, JobPosting, ScoreRun
|
||||
from apps.sources.models import MailboxConnection, Source, SourceRun
|
||||
from apps.sources.platforms import PLATFORM_ALERTS
|
||||
|
||||
profile, _ = SearchProfile.objects.get_or_create(
|
||||
user=user,
|
||||
@@ -185,7 +184,7 @@ def seed_demo_environment(user) -> None:
|
||||
},
|
||||
)
|
||||
slug = _digest("demo-job", str(index), title, employer_name)
|
||||
job, job_created = JobPosting.objects.get_or_create(
|
||||
job, _ = JobPosting.objects.update_or_create(
|
||||
canonical_key=slug,
|
||||
defaults={
|
||||
"employer": employer,
|
||||
@@ -221,6 +220,11 @@ def seed_demo_environment(user) -> None:
|
||||
)
|
||||
created_jobs.append(job)
|
||||
|
||||
ScoreRun.objects.filter(
|
||||
job=job,
|
||||
profile=profile,
|
||||
model_version="demo-seed",
|
||||
).delete()
|
||||
ScoreRun.objects.create(
|
||||
job=job,
|
||||
profile=profile,
|
||||
@@ -244,7 +248,7 @@ def seed_demo_environment(user) -> None:
|
||||
|
||||
# Een kleine sollicitatiepijplijn voor de demo.
|
||||
if created_jobs:
|
||||
Application.objects.get_or_create(
|
||||
Application.objects.update_or_create(
|
||||
user=user,
|
||||
job=created_jobs[0],
|
||||
defaults={
|
||||
@@ -257,7 +261,7 @@ def seed_demo_environment(user) -> None:
|
||||
},
|
||||
)
|
||||
if len(created_jobs) > 3:
|
||||
Application.objects.get_or_create(
|
||||
Application.objects.update_or_create(
|
||||
user=user,
|
||||
job=created_jobs[3],
|
||||
defaults={
|
||||
@@ -267,3 +271,42 @@ def seed_demo_environment(user) -> None:
|
||||
"notes": "Sollicitatie verstuurd. Demo-data.",
|
||||
},
|
||||
)
|
||||
|
||||
# Platformmailboxen zijn zichtbare ingressconfiguratie, geen crawlbare URL-bronnen.
|
||||
# De demo gebruikt uitsluitend fictieve adressen en wordt door de scheduler overgeslagen.
|
||||
for platform in PLATFORM_ALERTS:
|
||||
MailboxConnection.objects.update_or_create(
|
||||
user=user,
|
||||
platform=platform,
|
||||
defaults={
|
||||
"provider": MailboxConnection.Provider.OUTLOOK,
|
||||
"username": "alerts@example.test",
|
||||
"mailbox": f"VacatureRadar/{platform}",
|
||||
"enabled": True,
|
||||
"poll_interval_minutes": MailboxConnection.PollInterval.THIRTY_MINUTES,
|
||||
"next_poll_at": now + timedelta(minutes=30),
|
||||
"last_polled_at": now - timedelta(minutes=5),
|
||||
"last_success_at": now - timedelta(minutes=5),
|
||||
"last_error_category": "",
|
||||
"last_error_message": "",
|
||||
"lease_token": "",
|
||||
"lease_expires_at": None,
|
||||
},
|
||||
)
|
||||
source, _ = Source.objects.update_or_create(
|
||||
source_type=Source.Type.EMAIL,
|
||||
domain=f"{platform}.mailbox.local",
|
||||
defaults={
|
||||
"name": f"{PLATFORM_ALERTS[platform].label} vacaturemailbox",
|
||||
"base_url": "",
|
||||
"status": Source.Status.ACTIVE,
|
||||
"policy": Source.Policy.ALLOW,
|
||||
"policy_reason": "Mailboxingress; niet via URL-fetch gepland.",
|
||||
"parser_key": "email-alert",
|
||||
"failure_count": 0,
|
||||
"last_failure_at": None,
|
||||
"next_run_at": None,
|
||||
"metadata": {"demo": True, "mailbox_ingress": True},
|
||||
},
|
||||
)
|
||||
SourceRun.objects.filter(source=source).delete()
|
||||
|
||||
Reference in New Issue
Block a user