Skip to content

Commit

Permalink
docs(project): add structure to overall documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
tyronejosee committed Jun 9, 2024
1 parent 15e26fe commit 81db9e1
Show file tree
Hide file tree
Showing 56 changed files with 1,827 additions and 450 deletions.
106 changes: 106 additions & 0 deletions apps/animes/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# Generated by Django 5.0.1 on 2024-06-08 03:52

import apps.utils.paths
import apps.utils.validators
import django.core.validators
import django.db.models.deletion
import uuid
from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = [
('genres', '0001_initial'),
('producers', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='Broadcast',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('is_available', models.BooleanField(db_index=True, default=True, verbose_name='is available')),
('created_at', models.DateField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateField(auto_now=True, verbose_name='updated at')),
('string', models.CharField(blank=True, max_length=50, verbose_name='string')),
('day', models.CharField(choices=[('monday', 'Monday'), ('tuesday', 'Tuesday'), ('wednesday', 'Wednesday'), ('thursday', 'Thursday'), ('friday', 'Friday'), ('saturday', 'Saturday'), ('sunday', 'Sunday')], max_length=10, verbose_name='day')),
('time', models.TimeField(verbose_name='time')),
('timezone', models.CharField(choices=[('JST', 'Japan Standard Time'), ('PST', 'Pacific Standard Time'), ('EST', 'Eastern Standard Time'), ('CST', 'Central Standard Time'), ('GMT', 'Greenwich Mean Time'), ('CET', 'Central European Time')], default='JST', max_length=3, verbose_name='timezone')),
],
options={
'verbose_name': 'broadcast',
'verbose_name_plural': 'broadcasts',
'ordering': ['pk'],
},
),
migrations.CreateModel(
name='Anime',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('is_available', models.BooleanField(db_index=True, default=True, verbose_name='is available')),
('created_at', models.DateField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateField(auto_now=True, verbose_name='updated at')),
('slug', models.SlugField(blank=True, null=True, unique=True, verbose_name='Slug')),
('name', models.CharField(max_length=255, unique=True, verbose_name='name (eng)')),
('name_jpn', models.CharField(max_length=255, unique=True, verbose_name='name (jpn)')),
('name_rom', models.CharField(blank=True, max_length=255, unique=True, verbose_name='name (rmj)')),
('alternative_names', models.JSONField(blank=True, default=list, null=True, verbose_name='alternative names')),
('image', models.ImageField(blank=True, null=True, upload_to=apps.utils.paths.picture_image_path, validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['jpg', 'webp']), apps.utils.validators.ImageSizeValidator(max_height=1280, max_width=909), apps.utils.validators.FileSizeValidator(limit_mb=2)], verbose_name='image')),
('trailer', models.URLField(blank=True, max_length=255, verbose_name='trailer')),
('synopsis', models.TextField(blank=True, null=True, verbose_name='synopsis')),
('background', models.TextField(blank=True, null=True, verbose_name='background')),
('season', models.CharField(choices=[('winter', 'Winter'), ('spring', 'Spring'), ('summer', 'Summer'), ('fall', 'Fall')], db_index=True, max_length=10, verbose_name='season')),
('year', models.IntegerField(db_index=True, default=2010, validators=[django.core.validators.MinValueValidator(1900), django.core.validators.MaxValueValidator(2100)], verbose_name='year')),
('media_type', models.CharField(choices=[('tv', 'TV'), ('ova', 'OVA'), ('movie', 'Movie'), ('special', 'Special'), ('ona', 'ONA'), ('music', 'Music')], default='tv', max_length=10, verbose_name='media type')),
('source', models.CharField(choices=[('original', 'Original'), ('manga', 'Manga'), ('novel', 'Novel'), ('lnovel', 'Light Novel'), ('vnovel', 'Visual Novel'), ('game', 'Game'), ('book', 'Book'), ('radio', 'Radio'), ('music', 'Music')], default='manga', max_length=10, verbose_name='source')),
('episodes', models.IntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(1500)], verbose_name='episodes')),
('status', models.CharField(choices=[('finished', 'Finished'), ('airing', 'Airing'), ('upcoming', 'Upcoming')], default='airing', max_length=10, verbose_name='status')),
('aired_from', models.DateField(verbose_name='aired from')),
('aired_to', models.DateField(blank=True, null=True, verbose_name='aired to')),
('duration', models.CharField(blank=True, max_length=20, verbose_name='duration')),
('rating', models.CharField(choices=[('g', 'G - All Ages'), ('pg', 'PG - Children'), ('pg13', 'PG-13 - Teens 13 and Older'), ('r', 'R - 17+ (Violence & Profanity)'), ('rplus', 'R+ - Profanity & Mild Nudity'), ('rx', 'RX - Hentai')], default='pg13', max_length=10, verbose_name='rating')),
('website', models.URLField(blank=True, max_length=255, verbose_name='website')),
('is_recommended', models.BooleanField(default=False, verbose_name='is recommended')),
('score', models.FloatField(blank=True, null=True, verbose_name='score')),
('ranked', models.PositiveIntegerField(default=0, verbose_name='ranked')),
('popularity', models.PositiveIntegerField(default=0, verbose_name='popularity')),
('members', models.PositiveIntegerField(default=0, verbose_name='members')),
('favorites', models.PositiveIntegerField(default=0, verbose_name='favorites')),
('genres', models.ManyToManyField(to='genres.genre', verbose_name='genres')),
('licensors_id', models.ForeignKey(blank=True, limit_choices_to={'is_available': True, 'type': 'licensor'}, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='licensed_animes', to='producers.producer', verbose_name='licensors')),
('producers', models.ManyToManyField(limit_choices_to={'is_available': True, 'type': 'distributor'}, related_name='produced_animes', to='producers.producer', verbose_name='producers')),
('studio_id', models.ForeignKey(limit_choices_to={'is_available': True, 'type': 'studio'}, on_delete=django.db.models.deletion.CASCADE, related_name='studio_animes', to='producers.producer', verbose_name='studio')),
('themes', models.ManyToManyField(to='genres.theme', verbose_name='themes')),
('broadcast_id', models.ForeignKey(blank=True, limit_choices_to={'is_available': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, to='animes.broadcast', verbose_name='broadcast')),
],
options={
'verbose_name': 'anime',
'verbose_name_plural': 'animes',
'ordering': ['pk'],
},
),
migrations.CreateModel(
name='AnimeStats',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('is_available', models.BooleanField(db_index=True, default=True, verbose_name='is available')),
('created_at', models.DateField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateField(auto_now=True, verbose_name='updated at')),
('watching', models.PositiveIntegerField(default=0)),
('completed', models.PositiveIntegerField(default=0)),
('on_hold', models.PositiveIntegerField(default=0)),
('dropped', models.PositiveIntegerField(default=0)),
('plan_to_watch', models.PositiveIntegerField(default=0)),
('total', models.PositiveIntegerField(default=0)),
('anime_id', models.OneToOneField(limit_choices_to={'is_available': True}, on_delete=django.db.models.deletion.CASCADE, related_name='stats', to='animes.anime')),
],
options={
'verbose_name': 'anime stats',
'verbose_name_plural': 'anime stats',
'ordering': ['pk'],
},
),
]
3 changes: 3 additions & 0 deletions apps/animes/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ class Anime(BaseModel, SlugMixin):
"type": TypeChoices.DISTRIBUTOR,
"is_available": True,
},
related_name="produced_animes",
verbose_name=_("producers"),
)
licensors_id = models.ForeignKey(
Expand All @@ -148,6 +149,7 @@ class Anime(BaseModel, SlugMixin):
"type": TypeChoices.LICENSOR,
"is_available": True,
},
related_name="licensed_animes",
verbose_name=_("licensors"),
)
studio_id = models.ForeignKey(
Expand All @@ -157,6 +159,7 @@ class Anime(BaseModel, SlugMixin):
"type": TypeChoices.STUDIO,
"is_available": True,
},
related_name="studio_animes",
verbose_name=_("studio"),
)
genres = models.ManyToManyField(Genre, verbose_name=_("genres"))
Expand Down
99 changes: 99 additions & 0 deletions apps/characters/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Generated by Django 5.0.1 on 2024-06-08 03:52

import apps.utils.paths
import apps.utils.validators
import django.core.validators
import django.db.models.deletion
import uuid
from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = [
('animes', '0001_initial'),
('mangas', '0001_initial'),
('persons', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='Character',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('is_available', models.BooleanField(db_index=True, default=True, verbose_name='is available')),
('created_at', models.DateField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateField(auto_now=True, verbose_name='updated at')),
('slug', models.SlugField(blank=True, null=True, unique=True, verbose_name='Slug')),
('name', models.CharField(max_length=255, verbose_name='name')),
('name_kanji', models.CharField(max_length=255, verbose_name='name kanji')),
('about', models.TextField(blank=True, verbose_name='about')),
('role', models.CharField(choices=[('main', 'Main'), ('supporting', 'Supporting')], max_length=15, verbose_name='role')),
('image', models.ImageField(blank=True, null=True, upload_to=apps.utils.paths.image_path, validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['jpg', 'webp']), apps.utils.validators.ImageSizeValidator(max_height=600, max_width=600), apps.utils.validators.FileSizeValidator(limit_mb=1)], verbose_name='image')),
('favorites', models.PositiveIntegerField(default=0, verbose_name='favorites')),
],
options={
'verbose_name': 'character',
'verbose_name_plural': 'characters',
'ordering': ['pk'],
},
),
migrations.CreateModel(
name='CharacterAnime',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('is_available', models.BooleanField(db_index=True, default=True, verbose_name='is available')),
('created_at', models.DateField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateField(auto_now=True, verbose_name='updated at')),
('anime_id', models.ForeignKey(limit_choices_to={'is_available': True}, on_delete=django.db.models.deletion.CASCADE, related_name='character_anime', to='animes.anime')),
('character_id', models.ForeignKey(limit_choices_to={'is_available': True}, on_delete=django.db.models.deletion.CASCADE, related_name='character_anime', to='characters.character')),
],
options={
'verbose_name': 'character anime',
'verbose_name_plural': 'character animes',
'ordering': ['pk'],
},
),
migrations.CreateModel(
name='CharacterManga',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('is_available', models.BooleanField(db_index=True, default=True, verbose_name='is available')),
('created_at', models.DateField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateField(auto_now=True, verbose_name='updated at')),
('character_id', models.ForeignKey(limit_choices_to={'is_available': True}, on_delete=django.db.models.deletion.CASCADE, related_name='character_manga', to='characters.character')),
('manga_id', models.ForeignKey(limit_choices_to={'is_available': True}, on_delete=django.db.models.deletion.CASCADE, related_name='character_manga', to='mangas.manga')),
],
options={
'verbose_name': 'character manga',
'verbose_name_plural': 'character mangas',
'ordering': ['pk'],
},
),
migrations.CreateModel(
name='CharacterVoice',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('is_available', models.BooleanField(db_index=True, default=True, verbose_name='is available')),
('created_at', models.DateField(auto_now_add=True, verbose_name='created at')),
('updated_at', models.DateField(auto_now=True, verbose_name='updated at')),
('character_id', models.ForeignKey(limit_choices_to={'is_available': True}, on_delete=django.db.models.deletion.CASCADE, related_name='character_voice', to='characters.character')),
('voice_id', models.ForeignKey(limit_choices_to={'category': 'voice_actor', 'is_available': True}, on_delete=django.db.models.deletion.PROTECT, related_name='character_voice', to='persons.person')),
],
options={
'verbose_name': 'character voice',
'verbose_name_plural': 'character voices',
'ordering': ['pk'],
},
),
migrations.AddConstraint(
model_name='characteranime',
constraint=models.UniqueConstraint(fields=('character_id', 'anime_id'), name='unique_character_anime'),
),
migrations.AddConstraint(
model_name='charactermanga',
constraint=models.UniqueConstraint(fields=('character_id', 'manga_id'), name='unique_character_manga'),
),
]
44 changes: 22 additions & 22 deletions apps/clubs/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,17 @@ class ClubMemberAdmin(admin.ModelAdmin):
ordering = ["-created_at"]
list_per_page = 25
search_fields = [
"club",
"user",
"club_id",
"user_id",
]
list_display = [
"club",
"user",
"club_id",
"user_id",
"is_available",
]
list_filter = [
"is_available",
"club",
"club_id",
]
list_editable = [
"is_available",
Expand All @@ -75,13 +75,13 @@ class EventAdmin(admin.ModelAdmin):
"name",
]
list_display = [
"club",
"club_id",
"name",
"is_available",
]
list_filter = [
"is_available",
"club",
"club_id",
]
list_editable = [
"is_available",
Expand All @@ -103,20 +103,20 @@ class TopicAdmin(admin.ModelAdmin):
"name",
]
list_display = [
"club",
"club_id",
"is_available",
]
list_filter = [
"is_available",
]
list_editable = [
"is_available",
]
readonly_fields = [
"pk",
"created_at",
"updated_at",
]
# list_filter = [
# "is_available",
# ]
# list_editable = [
# "is_available",
# ]
# readonly_fields = [
# "pk",
# "created_at",
# "updated_at",
# ]


@admin.register(Discussion)
Expand All @@ -126,16 +126,16 @@ class DiscussionAdmin(admin.ModelAdmin):
ordering = ["-created_at"]
list_per_page = 25
search_fields = [
"topic",
"topic_id",
]
list_display = [
"topic",
"topic_id",
"content",
"is_available",
]
list_filter = [
"is_available",
"topic",
"topic_id",
]
list_editable = [
"is_available",
Expand Down
Loading

0 comments on commit 81db9e1

Please sign in to comment.