You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

392 lines
14 KiB

# 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",),
),
]