# Generated by Django 4.2.27 on 2026-01-22 10:48 import dj_language.field from django.conf import settings from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("dj_language", "0002_auto_20220120_1344"), ] operations = [ migrations.CreateModel( name="Book", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("title", models.CharField(max_length=255)), ("slug", models.SlugField(max_length=255, unique=True)), ("slogan", models.CharField(blank=True, max_length=300, null=True)), ( "summary_title", models.CharField( blank=True, help_text="Summary Title", max_length=512, null=True ), ), ( "summary", models.CharField( blank=True, help_text="Summary", max_length=512, null=True ), ), ( "description", models.TextField(blank=True, help_text="could be null", null=True), ), ( "thumbnail", models.ImageField( blank=True, help_text="image allowed", null=True, upload_to="book_thumbnails/", ), ), ("publisher", models.CharField(blank=True, max_length=655, null=True)), ( "year_of_publication", models.CharField(blank=True, max_length=255, null=True), ), ("author", models.CharField(blank=True, max_length=255, null=True)), ("isbn", models.CharField(blank=True, max_length=255, null=True)), ( "numnber_of_volume", models.CharField(blank=True, max_length=255, null=True), ), ( "main_themes", models.JSONField( blank=True, default=list, help_text="List of main themes", verbose_name="Main Themes", ), ), ( "notable_works", models.JSONField( blank=True, default=list, help_text="List of notable works", verbose_name="Notable Works", ), ), ( "pages_count", models.CharField( help_text="eg. 34", max_length=255, null=True, verbose_name="Number of Pages", ), ), ("status", models.BooleanField(default=True, verbose_name="status")), ("pin", models.BooleanField(default=True, verbose_name="Pin to top")), ( "view_count", models.PositiveBigIntegerField( default=0, verbose_name="view count" ), ), ( "download_count", models.PositiveBigIntegerField( default=0, verbose_name="view count" ), ), ( "file_type", models.CharField( choices=[("pdf", "Pdf"), ("epub", "Epub"), ("docx", "Docx")], default="pdf", max_length=16, verbose_name="File Type", ), ), ( "book_file", models.FileField( blank=True, max_length=550, null=True, upload_to="books", verbose_name="Book File", ), ), ( "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": "Book", "verbose_name_plural": "Books", }, ), migrations.CreateModel( name="Category", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("title", models.CharField(max_length=255)), ("slug", models.SlugField(max_length=255, unique=True)), ("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": "Category", "verbose_name_plural": "Categories", }, ), migrations.CreateModel( name="BookDownload", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("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"), ), ( "book", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="downloads", to="library.book", verbose_name="book", ), ), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="book_downloads", to=settings.AUTH_USER_MODEL, verbose_name="user", ), ), ], options={ "verbose_name": "Book Download", "verbose_name_plural": "Book Downloads", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="BookCollection", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("title", models.CharField(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")), ( "display_position", models.CharField( choices=[("pinned", "Pinned"), ("middle", "Middle Section")], default="pinned", max_length=20, verbose_name="Display Position", ), ), ("status", models.BooleanField(default=True, verbose_name="status")), ("order", models.IntegerField(default=0, verbose_name="order")), ( "books", models.ManyToManyField( blank=True, related_name="related_collections_books", to="library.book", verbose_name="Books", ), ), ], options={ "verbose_name": "Book Collection", "verbose_name_plural": "Book Collections", }, ), migrations.AddField( model_name="book", name="categories", field=models.ManyToManyField( blank=True, related_name="related_categories", to="library.category", verbose_name="categories", ), ), migrations.AddField( model_name="book", name="collections", field=models.ManyToManyField( blank=True, related_name="related_collections", to="library.bookcollection", verbose_name="collections", ), ), migrations.AddField( model_name="book", name="language", field=dj_language.field.LanguageField( blank=True, default=69, limit_choices_to={"status": True}, null=True, on_delete=django.db.models.deletion.PROTECT, related_name="+", to="dj_language.language", verbose_name="Language", ), ), migrations.CreateModel( name="MiddleBookCollection", fields=[], options={ "verbose_name": "Middle Section Book Collection", "verbose_name_plural": "Middle Section Book Collections", "proxy": True, "indexes": [], "constraints": [], }, bases=("library.bookcollection",), ), migrations.CreateModel( name="PinnedBookCollection", fields=[], options={ "verbose_name": "Pinned Book Collection", "verbose_name_plural": "Pinned Book Collections", "proxy": True, "indexes": [], "constraints": [], }, bases=("library.bookcollection",), ), ]