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.
323 lines
12 KiB
323 lines
12 KiB
# 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",),
|
|
),
|
|
]
|