# Generated by Django 6.1.3 on 2026-11-04 15:49 import django.db.models.deletion import uuid 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='Achievement', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('slug', models.SlugField(max_length=100, unique=True)), ('name', models.CharField(max_length=160)), ('description', models.TextField(blank=True)), ('icon', models.CharField(blank=True, max_length=80)), ('rule_type', models.CharField(choices=[('task_count', 'Nombre de réalisations'), ('skill_xp', 'XP dans une compétence'), ('tree_xp', 'XP dans un arbre'), ('total_xp', 'XP total'), ('distinct_tasks', 'Tâches différentes')], max_length=32)), ('rule_config', models.JSONField(default=dict)), ('xp_reward', models.PositiveIntegerField(default=0)), ('is_secret', models.BooleanField(default=False)), ('is_active', models.BooleanField(default=True)), ], ), migrations.CreateModel( name='Title', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('slug', models.SlugField(max_length=100, unique=True)), ('name', models.CharField(max_length=120)), ('description', models.TextField(blank=True)), ('achievement', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='title', to='achievements.achievement')), ], ), migrations.CreateModel( name='PlayerTitle', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('unlocked_at', models.DateTimeField(auto_now_add=True)), ('is_equipped', models.BooleanField(default=False)), ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='titles', to=settings.AUTH_USER_MODEL)), ('title', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='achievements.title')), ], ), migrations.CreateModel( name='PlayerAchievement', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('unlocked_at', models.DateTimeField(auto_now_add=True)), ('progress_snapshot', models.JSONField(default=dict)), ('achievement', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='players', to='achievements.achievement')), ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='achievements', to=settings.AUTH_USER_MODEL)), ], options={ 'constraints': [models.UniqueConstraint(fields=('player', 'achievement'), name='unique_player_achievement')], }, ), ]