# Generated by Django 5.2.17 on 2026-09-26 05:27

import django.db.models.deletion
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('contenttypes', '0002_remove_content_type_name'),
        ('medialib', '0001_initial'),
        ('taxonomy', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Annonce',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='créé le')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='modifié le')),
                ('deleted_at', models.DateTimeField(blank=True, db_index=True, null=True, verbose_name='mis à la corbeille le')),
                ('titre', models.CharField(max_length=255, verbose_name='titre')),
                ('slug', models.SlugField(blank=True, max_length=255, unique=True, verbose_name='adresse')),
                ('statut', models.CharField(choices=[('brouillon', 'Brouillon'), ('relecture', 'En relecture'), ('publie', 'Publié'), ('archive', 'Archivé')], db_index=True, default='brouillon', max_length=12, verbose_name='statut')),
                ('publie_le', models.DateTimeField(blank=True, db_index=True, help_text='Une date future programme la publication.', null=True, verbose_name='date de publication')),
                ('archive_le', models.DateTimeField(blank=True, null=True, verbose_name='archivé le')),
                ('soumis_le', models.DateTimeField(blank=True, null=True, verbose_name='soumis en relecture le')),
                ('note_relecture', models.TextField(blank=True, verbose_name='note de relecture')),
                ('est_a_la_une', models.BooleanField(db_index=True, default=False, verbose_name='à la une')),
                ('legende_image', models.CharField(blank=True, max_length=255, verbose_name="légende de l'image")),
                ('type', models.CharField(choices=[('communique', 'Communiqué'), ('avis', 'Avis'), ('appel_offres', "Appel d'offres"), ('recrutement', 'Recrutement'), ('evenement', 'Événement'), ('necrologie', 'Nécrologie'), ('autre', 'Autre')], db_index=True, default='communique', max_length=20, verbose_name="type d'annonce")),
                ('resume', models.TextField(blank=True, verbose_name='résumé')),
                ('contenu', models.TextField(verbose_name='contenu')),
                ('annonceur', models.CharField(blank=True, max_length=200, verbose_name='annonceur / organisme')),
                ('contact', models.CharField(blank=True, help_text='Téléphone, email ou adresse.', max_length=255, verbose_name='contact')),
                ('date_limite', models.DateField(blank=True, help_text="Après cette date, l'annonce est signalée comme expirée.", null=True, verbose_name='date limite / fin de validité')),
                ('auteur', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='%(class)ss', to=settings.AUTH_USER_MODEL, verbose_name='auteur')),
                ('deleted_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('image_principale', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='medialib.mediaasset', verbose_name='image principale')),
                ('modifie_par', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='dernière modification par')),
                ('piece_jointe', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='medialib.mediaasset', verbose_name='pièce jointe')),
            ],
            options={
                'verbose_name': 'annonce',
                'ordering': ['-publie_le', '-created_at'],
            },
        ),
        migrations.CreateModel(
            name='Article',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='créé le')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='modifié le')),
                ('deleted_at', models.DateTimeField(blank=True, db_index=True, null=True, verbose_name='mis à la corbeille le')),
                ('titre', models.CharField(max_length=255, verbose_name='titre')),
                ('slug', models.SlugField(blank=True, max_length=255, unique=True, verbose_name='adresse')),
                ('statut', models.CharField(choices=[('brouillon', 'Brouillon'), ('relecture', 'En relecture'), ('publie', 'Publié'), ('archive', 'Archivé')], db_index=True, default='brouillon', max_length=12, verbose_name='statut')),
                ('publie_le', models.DateTimeField(blank=True, db_index=True, help_text='Une date future programme la publication.', null=True, verbose_name='date de publication')),
                ('archive_le', models.DateTimeField(blank=True, null=True, verbose_name='archivé le')),
                ('soumis_le', models.DateTimeField(blank=True, null=True, verbose_name='soumis en relecture le')),
                ('note_relecture', models.TextField(blank=True, verbose_name='note de relecture')),
                ('est_a_la_une', models.BooleanField(db_index=True, default=False, verbose_name='à la une')),
                ('legende_image', models.CharField(blank=True, max_length=255, verbose_name="légende de l'image")),
                ('resume', models.TextField(blank=True, verbose_name='chapeau / résumé')),
                ('contenu', models.TextField(verbose_name='contenu')),
                ('vues', models.PositiveIntegerField(default=0, verbose_name='vues')),
                ('auteur', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='%(class)ss', to=settings.AUTH_USER_MODEL, verbose_name='auteur')),
                ('categorie', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='articles', to='taxonomy.category', verbose_name='rubrique')),
                ('deleted_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('image_principale', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='medialib.mediaasset', verbose_name='image principale')),
                ('modifie_par', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='dernière modification par')),
                ('tags', models.ManyToManyField(blank=True, related_name='articles', to='taxonomy.tag', verbose_name='mots-clés')),
            ],
            options={
                'verbose_name': 'article',
                'ordering': ['-publie_le', '-created_at'],
            },
        ),
        migrations.CreateModel(
            name='ArticleImage',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('legende', models.CharField(blank=True, max_length=255, verbose_name='légende')),
                ('ordre', models.PositiveIntegerField(default=0)),
                ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='editorial.article')),
                ('media', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='medialib.mediaasset')),
            ],
            options={
                'verbose_name': 'image de galerie',
                'ordering': ['ordre', 'id'],
            },
        ),
        migrations.CreateModel(
            name='Revision',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('object_id', models.PositiveBigIntegerField()),
                ('created_at', models.DateTimeField(default=django.utils.timezone.now)),
                ('action', models.CharField(max_length=40)),
                ('data', models.JSONField()),
                ('auteur', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')),
            ],
            options={
                'ordering': ['-created_at'],
            },
        ),
        migrations.AddIndex(
            model_name='article',
            index=models.Index(fields=['statut', 'publie_le'], name='editorial_a_statut_8f2476_idx'),
        ),
        migrations.AddIndex(
            model_name='revision',
            index=models.Index(fields=['content_type', 'object_id'], name='editorial_r_content_a7f340_idx'),
        ),
    ]
