# Generated by Django 4.2.16 on 2026-04-14 02:10

import ckeditor.fields
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import taggit.managers


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('taggit', '0006_rename_taggeditem_content_type_object_id_taggit_tagg_content_8fc721_idx'),
    ]

    operations = [
        migrations.CreateModel(
            name='Article',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=300)),
                ('subtitle', models.CharField(blank=True, max_length=400)),
                ('slug', models.SlugField(max_length=350, unique=True)),
                ('content_type', models.CharField(choices=[('article', 'Article'), ('video', 'Video Feature'), ('gallery', 'Photo Gallery'), ('opinion', 'Opinion'), ('timeline', 'Historical Timeline')], default='article', max_length=20)),
                ('status', models.CharField(choices=[('draft', 'Draft'), ('review', 'Under Review'), ('published', 'Published'), ('archived', 'Archived')], default='draft', max_length=20)),
                ('body', ckeditor.fields.RichTextField()),
                ('excerpt', models.TextField(max_length=500)),
                ('featured_image', models.ImageField(upload_to='articles/%Y/%m/')),
                ('image_caption', models.CharField(blank=True, max_length=300)),
                ('image_credit', models.CharField(blank=True, max_length=200)),
                ('video_url', models.URLField(blank=True)),
                ('video_thumbnail', models.ImageField(blank=True, upload_to='video_thumbs/')),
                ('is_featured', models.BooleanField(default=False)),
                ('is_editors_pick', models.BooleanField(default=False)),
                ('is_breaking', models.BooleanField(default=False)),
                ('is_premium', models.BooleanField(default=False)),
                ('historical_period', models.CharField(blank=True, max_length=100)),
                ('historical_date', models.CharField(blank=True, max_length=100)),
                ('present_connection', models.TextField(blank=True)),
                ('meta_title', models.CharField(blank=True, max_length=200)),
                ('meta_description', models.TextField(blank=True)),
                ('og_image', models.ImageField(blank=True, upload_to='og/')),
                ('published_at', models.DateTimeField(blank=True, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('view_count', models.PositiveIntegerField(default=0)),
            ],
            options={
                'ordering': ['-published_at'],
            },
        ),
        migrations.CreateModel(
            name='Category',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('slug', models.SlugField(unique=True)),
                ('description', models.TextField(blank=True)),
                ('icon', models.CharField(blank=True, max_length=50)),
                ('cover_image', models.ImageField(blank=True, upload_to='categories/')),
                ('order', models.PositiveSmallIntegerField(default=0)),
                ('is_active', models.BooleanField(default=True)),
                ('meta_description', models.TextField(blank=True)),
                ('accent_color', models.CharField(default='#8b6914', max_length=7)),
            ],
            options={
                'verbose_name_plural': 'Categories',
                'ordering': ['order', 'name'],
            },
        ),
        migrations.CreateModel(
            name='TimelineEvent',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('year', models.CharField(max_length=20)),
                ('title', models.CharField(max_length=200)),
                ('description', models.TextField()),
                ('image', models.ImageField(blank=True, upload_to='timeline/')),
                ('order', models.PositiveSmallIntegerField(default=0)),
                ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='timeline_events', to='articles.article')),
            ],
            options={
                'ordering': ['order'],
            },
        ),
        migrations.CreateModel(
            name='Author',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=150)),
                ('slug', models.SlugField(unique=True)),
                ('bio', models.TextField(blank=True)),
                ('photo', models.ImageField(blank=True, upload_to='authors/')),
                ('email', models.EmailField(blank=True, max_length=254)),
                ('twitter', models.URLField(blank=True)),
                ('is_external', models.BooleanField(default=False)),
                ('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.AddField(
            model_name='article',
            name='author',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='articles.author'),
        ),
        migrations.AddField(
            model_name='article',
            name='category',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='articles.category'),
        ),
        migrations.AddField(
            model_name='article',
            name='tags',
            field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'),
        ),
        migrations.AddIndex(
            model_name='article',
            index=models.Index(fields=['status', 'published_at'], name='articles_ar_status_7759bd_idx'),
        ),
        migrations.AddIndex(
            model_name='article',
            index=models.Index(fields=['category', 'status'], name='articles_ar_categor_961ad7_idx'),
        ),
        migrations.AddIndex(
            model_name='article',
            index=models.Index(fields=['is_featured', 'status'], name='articles_ar_is_feat_cc188d_idx'),
        ),
    ]
