# Generated by Django 5.1.8 on 2025-05-06 12:35 import django.db.models.deletion from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ 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='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/')), ('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')), ('categories', models.ManyToManyField(blank=True, related_name='articles', to='article.articlecategory', verbose_name='categories')), ], options={ 'verbose_name': 'Article', 'verbose_name_plural': 'Articles', }, ), migrations.CreateModel( name='MiddleArticleCollection', fields=[ ], options={ 'verbose_name': 'Middle Section Article Collection', 'verbose_name_plural': 'Middle Section Article Collections', 'proxy': True, 'indexes': [], 'constraints': [], }, bases=('article.articlecollection',), ), migrations.CreateModel( name='PinnedArticleCollection', fields=[ ], options={ 'verbose_name': 'Pinned Article Collection', 'verbose_name_plural': 'Pinned Article Collections', 'proxy': True, 'indexes': [], 'constraints': [], }, bases=('article.articlecollection',), ), 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='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='collections', field=models.ManyToManyField(blank=True, related_name='related_articles', through='article.ArticleInCollection', to='article.articlecollection', verbose_name='collections'), ), migrations.CreateModel( name='ContentPart', 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')), ('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'], }, ), ]