# Generated by Django 5.2.16 on 2026-07-20 23:57 import apps.profiles.defaults import datetime import django.db.models.deletion from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='SearchProfile', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('name', models.CharField(default='Primair profiel', max_length=120)), ('is_active', models.BooleanField(default=True)), ('locale', models.CharField(default='nl-BE', max_length=10)), ('timezone', models.CharField(default='Europe/Brussels', max_length=64)), ('home_postal_code', models.CharField(blank=True, max_length=12)), ('home_municipality', models.CharField(blank=True, max_length=120)), ('home_latitude', models.DecimalField(blank=True, decimal_places=6, max_digits=9, null=True)), ('home_longitude', models.DecimalField(blank=True, decimal_places=6, max_digits=9, null=True)), ('max_distance_km', models.PositiveIntegerField(default=45)), ('desired_titles', models.JSONField(blank=True, default=list)), ('excluded_titles', models.JSONField(blank=True, default=list)), ('desired_skills', models.JSONField(blank=True, default=list)), ('excluded_skills', models.JSONField(blank=True, default=list)), ('allowed_employment_types', models.JSONField(blank=True, default=list)), ('preferred_workplace', models.JSONField(blank=True, default=list)), ('preferred_regions', models.JSONField(blank=True, default=list)), ('excluded_regions', models.JSONField(blank=True, default=list)), ('hard_rules', models.JSONField(blank=True, default=apps.profiles.defaults.default_hard_rules)), ('soft_preferences', models.JSONField(blank=True, default=apps.profiles.defaults.default_soft_preferences)), ('weights', models.JSONField(blank=True, default=apps.profiles.defaults.default_weights)), ('recommendation_threshold', models.PositiveSmallIntegerField(default=65)), ('top_match_threshold', models.PositiveSmallIntegerField(default=90)), ('digest_time', models.TimeField(default=datetime.time(7, 30))), ('quiet_hours_start', models.TimeField(default=datetime.time(22, 0))), ('quiet_hours_end', models.TimeField(default=datetime.time(7, 0))), ('learning_enabled', models.BooleanField(default=True)), ('version', models.PositiveIntegerField(default=1)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'ordering': ['-is_active', 'name'], }, ), migrations.CreateModel( name='ProfileRevision', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('version', models.PositiveIntegerField()), ('snapshot', models.JSONField(default=dict)), ('reason', models.CharField(blank=True, max_length=200)), ('profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='revisions', to='profiles.searchprofile')), ], options={ 'ordering': ['-version'], }, ), migrations.AddConstraint( model_name='searchprofile', constraint=models.UniqueConstraint(fields=('user', 'name'), name='unique_profile_name_per_user'), ), migrations.AddConstraint( model_name='profilerevision', constraint=models.UniqueConstraint(fields=('profile', 'version'), name='unique_revision_version_per_profile'), ), ]