mirror of
https://github.com/ajurna/cbwebreader.git
synced 2025-12-06 06:17:17 +00:00
New Frontend in Vue with drf interface (#72)
* frontend rewrite with vie initial commit * got ComicCard.vue working nice. * got TheComicList.vue working. * added router and basic config * getting jwt stuff working. * login with jwt now working. * implemented browse api call * implemented browse api recievers * jwt token is now updating automatically. * removed code for jwt testing. * enabled browsing * breadcrumbs working * adding django webpack loader * linking up navigation * fixes for ComicCard.vue stying * added thumbnail view * added thumbnail generation and handling. * detached breadcrumbs * fix breadcrumbs * added first stages of reader * reader view is working. * reader is now working with keyboard shortcuts * implemented setting read page. * implemented pagination on comic reader. * hide elements that shouldn't be shown. * fixed the ComicCard.vue to use as little space as possible. * fix navbar browse link * added RecentView.vue and added manual option for breadcrumbs * updated rest api to handle recent comics. * most functionality of recent comics done * modified comicstatus relation to use uuid relation and implemented mark read and unread for batches. * added functions to TheRecentTable.vue * added feed link to TheRecentTable.vue * fixes for comicstatus updates. * added constraints to comicstatus * update to python packages. * some changes for django 4, also removed django-recaptcha2 as it doesnt support django 4. * some fixes and updates to ComicCard.vue * cleaned up generate_directory. fixed bug where pages not visible on first call. * cleaned up generate_directory. fixed bug where pages not visible on first call. * cleaned up generate_directory. fixed bug where pages not visible on first call. * cleaned up generate_directory. * added silk stubs * fix for re-requesting thumbnail after getting it already. * fix for removing stale comics. adding leeway to access token. * mark read and unread * added filtering to comic list. * stored filtering state. * stored filtering state. * added next functionality to login. * cleanup LoginView.vue * bump font-awesome. * working on AccountView.vue * fixed form submission on LoginView.vue * account page should now be working. * hide users option if not superuser. * added pdf support * make pdf resize. * added touch controls to pdf reader * added touch controls to comic reader * beginnings of routing between issues. * fixes for navigating pages. * fixes for navigating pages. * fixes for navigating pages. * renamed HomeView.vue to BrowseView.vue * stubs for users page added. api ready * users page further functinality * fix for notification * fix for notification * moved messages to parent. * form to add users * added error handling * removed console logging * classification in base directory should be lowest * renamed usermisc to classification to be more consistent with what it does. * renamed usermisc to classification to be more consistent with what it does. * added functionality to change classification of directories. * merged rss_id api into account api. * merged breadcrumbs api into browse api. * clears some warnings from console. * fixed read/unread rendering. * added build script and starting lint * fixing lint errors * fixing lint errors * fixing lint errors * fixing lint errors * fixing lint errors * fixing lint errors * fixing lint errors * fixing lint errors * fixing navigation bugs * cleanup and fixes * fixed generated tooltips over calling. * fixed classifications. * initial setup now working * fix navbar branding * fix favicon * added beta build script. * fixes to get ready for production * optimisations for loading new comics. * added loading indicators to TheComicList.vue * lint fixes * made two methods static. may use them elsewhere. * fix for scanning files. * version updates. * fixes for production * fixes for production Co-authored-by: Peter Dwyer <peter.dwyer@clanwilliamhealth.com>
This commit is contained in:
19
comic/migrations/0029_comicbook_directory2.py
Normal file
19
comic/migrations/0029_comicbook_directory2.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-07 16:03
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0028_alter_comicpage_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='comicbook',
|
||||
name='directory2',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='directory2', to='comic.directory', to_field='selector'),
|
||||
),
|
||||
]
|
||||
22
comic/migrations/0030_auto_20220707_1720.py
Normal file
22
comic/migrations/0030_auto_20220707_1720.py
Normal file
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-07 16:20
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def forwards_func(apps, schema_editor):
|
||||
ComicBook = apps.get_model("comic", "ComicBook")
|
||||
for comic in ComicBook.objects.all():
|
||||
if comic.directory:
|
||||
comic.directory2 = comic.directory
|
||||
comic.save()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0029_comicbook_directory2'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forwards_func),
|
||||
]
|
||||
17
comic/migrations/0031_remove_comicbook_directory.py
Normal file
17
comic/migrations/0031_remove_comicbook_directory.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-07 16:25
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0030_auto_20220707_1720'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='comicbook',
|
||||
name='directory',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-07 16:25
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0031_remove_comicbook_directory'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='comicbook',
|
||||
old_name='directory2',
|
||||
new_name='directory',
|
||||
),
|
||||
]
|
||||
19
comic/migrations/0033_alter_comicbook_directory.py
Normal file
19
comic/migrations/0033_alter_comicbook_directory.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-07 16:32
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0032_rename_directory2_comicbook_directory'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='comicbook',
|
||||
name='directory',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comic.directory', to_field='selector'),
|
||||
),
|
||||
]
|
||||
19
comic/migrations/0034_directory_parent2.py
Normal file
19
comic/migrations/0034_directory_parent2.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-08 08:09
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0033_alter_comicbook_directory'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='directory',
|
||||
name='parent2',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='parent_new', to='comic.directory', to_field='selector'),
|
||||
),
|
||||
]
|
||||
28
comic/migrations/0035_auto_20220708_0910.py
Normal file
28
comic/migrations/0035_auto_20220708_0910.py
Normal file
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-08 08:10
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
def forwards_func(apps, schema_editor):
|
||||
Directory = apps.get_model("comic", "Directory")
|
||||
for directory in Directory.objects.all():
|
||||
if directory.parent:
|
||||
directory.parent2 = directory.parent
|
||||
directory.save()
|
||||
|
||||
def backwards_func(apps, schema_editor):
|
||||
return
|
||||
Directory = apps.get_model("comic", "Directory")
|
||||
for directory in Directory.objects.all():
|
||||
if directory.parent:
|
||||
directory.parent2 = directory.parent
|
||||
directory.save()
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0034_directory_parent2'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forwards_func, backwards_func),
|
||||
]
|
||||
17
comic/migrations/0036_remove_directory_parent.py
Normal file
17
comic/migrations/0036_remove_directory_parent.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-08 08:12
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0035_auto_20220708_0910'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='directory',
|
||||
name='parent',
|
||||
),
|
||||
]
|
||||
18
comic/migrations/0037_rename_parent2_directory_parent.py
Normal file
18
comic/migrations/0037_rename_parent2_directory_parent.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-08 08:14
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0036_remove_directory_parent'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='directory',
|
||||
old_name='parent2',
|
||||
new_name='parent',
|
||||
),
|
||||
]
|
||||
19
comic/migrations/0038_alter_directory_parent.py
Normal file
19
comic/migrations/0038_alter_directory_parent.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-08 08:14
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0037_rename_parent2_directory_parent'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='directory',
|
||||
name='parent',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comic.directory', to_field='selector'),
|
||||
),
|
||||
]
|
||||
19
comic/migrations/0039_comicstatus_comic2.py
Normal file
19
comic/migrations/0039_comicstatus_comic2.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-21 10:26
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0038_alter_directory_parent'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='comicstatus',
|
||||
name='comic2',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='comic2', to='comic.comicbook', to_field='selector'),
|
||||
),
|
||||
]
|
||||
28
comic/migrations/0040_auto_20220721_1126.py
Normal file
28
comic/migrations/0040_auto_20220721_1126.py
Normal file
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-21 10:21
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def forwards_func(apps, schema_editor):
|
||||
ComicStatus = apps.get_model("comic", "ComicStatus")
|
||||
for status in ComicStatus.objects.all():
|
||||
status.comic2 = status.comic
|
||||
status.save()
|
||||
|
||||
|
||||
def backwards_func(apps, schema_editor):
|
||||
ComicStatus = apps.get_model("comic", "ComicStatus")
|
||||
for status in ComicStatus.objects.all():
|
||||
status.comic = status.comic2
|
||||
status.save()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0039_comicstatus_comic2'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forwards_func, backwards_func),
|
||||
]
|
||||
19
comic/migrations/0041_alter_comicstatus_comic2.py
Normal file
19
comic/migrations/0041_alter_comicstatus_comic2.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-21 10:27
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0040_auto_20220721_1126'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='comicstatus',
|
||||
name='comic2',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comic2', to='comic.comicbook', to_field='selector'),
|
||||
),
|
||||
]
|
||||
17
comic/migrations/0042_remove_comicstatus_comic.py
Normal file
17
comic/migrations/0042_remove_comicstatus_comic.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-21 10:29
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0041_alter_comicstatus_comic2'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='comicstatus',
|
||||
name='comic',
|
||||
),
|
||||
]
|
||||
18
comic/migrations/0043_rename_comic2_comicstatus_comic.py
Normal file
18
comic/migrations/0043_rename_comic2_comicstatus_comic.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-21 10:29
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0042_remove_comicstatus_comic'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='comicstatus',
|
||||
old_name='comic2',
|
||||
new_name='comic',
|
||||
),
|
||||
]
|
||||
19
comic/migrations/0044_alter_comicstatus_comic.py
Normal file
19
comic/migrations/0044_alter_comicstatus_comic.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-21 10:29
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0043_rename_comic2_comicstatus_comic'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='comicstatus',
|
||||
name='comic',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='comic.comicbook', to_field='selector'),
|
||||
),
|
||||
]
|
||||
17
comic/migrations/0045_comicstatus_one_per_user_per_comic.py
Normal file
17
comic/migrations/0045_comicstatus_one_per_user_per_comic.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-22 08:40
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0044_alter_comicstatus_comic'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddConstraint(
|
||||
model_name='comicstatus',
|
||||
constraint=models.UniqueConstraint(fields=('user', 'comic'), name='one_per_user_per_comic'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 4.0.6 on 2022-07-22 11:56
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('comic', '0045_comicstatus_one_per_user_per_comic'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddConstraint(
|
||||
model_name='comicbook',
|
||||
constraint=models.UniqueConstraint(fields=('directory', 'file_name'), name='one_comic_name_per_directory'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user