# Generated by Django 4.2.27 on 2026-01-22 10:48 from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [] 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=255, null=True)), ("slug", models.SlugField(allow_unicode=True, unique=True)), ( "thumbnail", models.ImageField( blank=True, help_text="image allowed", null=True, upload_to="article_thumbnails/", ), ), ("description", models.TextField(null=True)), ("content", models.TextField(null=True)), ( "article_file", models.FileField( blank=True, help_text="PDF or other document files", null=True, upload_to="article/files/", ), ), ( "download_count", models.PositiveBigIntegerField( default=0, verbose_name="view count" ), ), ( "view_count", models.PositiveBigIntegerField( default=0, verbose_name="view count" ), ), ("status", models.BooleanField(default=True, verbose_name="status")), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at"), ), ], options={ "verbose_name": "Article", "verbose_name_plural": "Articles", }, ), migrations.CreateModel( name="ArticleCategory", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("title", models.CharField(max_length=255, verbose_name="title")), ( "slug", models.SlugField( allow_unicode=True, unique=True, verbose_name="slug" ), ), ("status", models.BooleanField(default=True, verbose_name="status")), ("order", models.PositiveIntegerField(default=0, verbose_name="order")), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at"), ), ], options={ "verbose_name": "Article Category", "verbose_name_plural": "Article Categories", "ordering": ["order"], }, ), migrations.CreateModel( name="ArticleCollection", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "title", models.CharField( help_text="This title will not be displayed anywhere", max_length=255, ), ), ("slug", models.SlugField(max_length=255, unique=True)), ( "summary", models.CharField( blank=True, help_text="could be null", max_length=512, null=True ), ), ("pin_top", models.BooleanField(default=True, verbose_name="pin top")), ( "thumbnail", models.ImageField( blank=True, help_text="image allowed", null=True, upload_to="article/collection/", ), ), ("order", models.IntegerField(default=0, verbose_name="order")), ("status", models.BooleanField(default=True, verbose_name="status")), ( "display_position", models.CharField( choices=[("pinned", "Pinned"), ("middle", "Middle Section")], default="pinned", max_length=20, verbose_name="Display Position", ), ), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at"), ), ], options={ "verbose_name": "Article Collection", "verbose_name_plural": "Articles Collections", }, ), migrations.CreateModel( name="ArticleContent", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("title", models.CharField(max_length=255, verbose_name="title")), ("content", models.TextField(blank=True, verbose_name="content")), ( "priority", models.PositiveIntegerField(default=0, verbose_name="priority"), ), ("status", models.BooleanField(default=True, verbose_name="status")), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at"), ), ( "article", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="contents", to="article.article", verbose_name="article", ), ), ], options={ "verbose_name": "Article Content", "verbose_name_plural": "Article Contents", "ordering": ["priority"], }, ), migrations.CreateModel( name="ContentPart", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("order", models.PositiveIntegerField(default=0, verbose_name="order")), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at"), ), ( "article_content", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="parts", to="article.articlecontent", verbose_name="article content", ), ), ], options={ "verbose_name": "Content Part", "verbose_name_plural": "Content Parts", "ordering": ["order"], }, ), migrations.CreateModel( name="TextSection", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("arabic_text", models.TextField(verbose_name="Arabic text")), ("translation", models.TextField(verbose_name="Translation")), ("order", models.PositiveIntegerField(default=0, verbose_name="order")), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at"), ), ( "content_part", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="text_sections", to="article.contentpart", verbose_name="content part", ), ), ], options={ "verbose_name": "Text Section", "verbose_name_plural": "Text Sections", "ordering": ["order"], }, ), migrations.CreateModel( name="ArticleInCollection", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("order", models.PositiveIntegerField(default=0, verbose_name="order")), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at"), ), ( "article", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="article_collections", to="article.article", verbose_name="article", ), ), ( "collection", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="collection_articles", to="article.articlecollection", verbose_name="collection", ), ), ], options={ "verbose_name": "Article in Collection", "verbose_name_plural": "Articles in Collections", "ordering": ["order"], "unique_together": {("collection", "article")}, }, ), migrations.AddField( model_name="articlecollection", name="articles", field=models.ManyToManyField( related_name="related_collections_article", through="article.ArticleInCollection", to="article.article", verbose_name="articles", ), ), migrations.AddField( model_name="article", name="categories", field=models.ManyToManyField( blank=True, related_name="articles", to="article.articlecategory", verbose_name="categories", ), ), migrations.AddField( model_name="article", name="collections", field=models.ManyToManyField( blank=True, related_name="related_articles", through="article.ArticleInCollection", to="article.articlecollection", verbose_name="collections", ), ), migrations.CreateModel( name="MiddleArticleCollection", fields=[], options={ "verbose_name": "Regular Collection (Middle Section)", "verbose_name_plural": "Regular Collections (Middle Section)", "proxy": True, "indexes": [], "constraints": [], }, bases=("article.articlecollection",), ), migrations.CreateModel( name="PinnedArticleCollection", fields=[], options={ "verbose_name": "Pinned Collection (Top Section)", "verbose_name_plural": "Pinned Collections (Top Section)", "proxy": True, "indexes": [], "constraints": [], }, bases=("article.articlecollection",), ), ]