mirror of
https://github.com/ajurna/cbwebreader.git
synced 2025-12-06 06:17:17 +00:00
update libs
This commit is contained in:
@@ -8,12 +8,6 @@ repos:
|
|||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
- id: check-added-large-files
|
- id: check-added-large-files
|
||||||
- repo: https://github.com/python-poetry/poetry
|
|
||||||
rev: '1.2.1' # add version here
|
|
||||||
hooks:
|
|
||||||
- id: poetry-check
|
|
||||||
- id: poetry-export
|
|
||||||
args: ["--without-hashes", "-o", "requirements.txt"]
|
|
||||||
- repo: https://github.com/pycqa/flake8
|
- repo: https://github.com/pycqa/flake8
|
||||||
rev: "5.0.4"
|
rev: "5.0.4"
|
||||||
hooks:
|
hooks:
|
||||||
|
|||||||
1
.python-version
Normal file
1
.python-version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.13
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
FROM python:3.10-slim-bullseye
|
FROM python:3.13-slim-bullseye
|
||||||
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
||||||
|
|
||||||
ENV PYTHONFAULTHANDLER=1 \
|
ENV PYTHONFAULTHANDLER=1 \
|
||||||
PYTHONHASHSEED=random \
|
PYTHONHASHSEED=random \
|
||||||
@@ -21,8 +22,7 @@ RUN apt update \
|
|||||||
&& apt-add-repository non-free \
|
&& apt-add-repository non-free \
|
||||||
&& apt update \
|
&& apt update \
|
||||||
&& apt install -y npm cron unrar libmariadb-dev libpq-dev \
|
&& apt install -y npm cron unrar libmariadb-dev libpq-dev \
|
||||||
&& pip install --upgrade pip \
|
&& uv sync \
|
||||||
&& pip install -r requirements.txt \
|
|
||||||
&& cd frontend \
|
&& cd frontend \
|
||||||
&& npm install \
|
&& npm install \
|
||||||
&& npm run build \
|
&& npm run build \
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ from django.views.generic import TemplateView
|
|||||||
from drf_yasg import openapi
|
from drf_yasg import openapi
|
||||||
from drf_yasg.views import get_schema_view
|
from drf_yasg.views import get_schema_view
|
||||||
from rest_framework import permissions
|
from rest_framework import permissions
|
||||||
from rest_framework_extensions.routers import ExtendedDefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
# from rest_framework_extensions.routers import ExtendedDefaultRouter
|
||||||
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
|
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
|
||||||
|
|
||||||
from comic import rest, feeds
|
from comic import rest, feeds
|
||||||
@@ -39,12 +40,12 @@ schema_view = get_schema_view(
|
|||||||
permission_classes=[permissions.AllowAny]
|
permission_classes=[permissions.AllowAny]
|
||||||
)
|
)
|
||||||
|
|
||||||
router = ExtendedDefaultRouter()
|
router = DefaultRouter()
|
||||||
router.register(r'users', rest.UserViewSet)
|
router.register(r'users', rest.UserViewSet)
|
||||||
router.register(r'browse', rest.BrowseViewSet, basename='browse')
|
router.register(r'browse', rest.BrowseViewSet, basename='browse')
|
||||||
router.register(r'generate_thumbnail', rest.GenerateThumbnailViewSet, basename='generate_thumbnail')
|
router.register(r'generate_thumbnail', rest.GenerateThumbnailViewSet, basename='generate_thumbnail')
|
||||||
router.register(r'read', rest.ReadViewSet, basename='read')\
|
router.register(r'read', rest.ReadViewSet, basename='read')
|
||||||
.register(r'image', rest.ImageViewSet, basename='image', parents_query_lookups=['selector'])
|
router.register(r'read/(?P<selector>[^/.]+)/image', rest.ImageViewSet, basename='image')
|
||||||
router.register(r'recent', rest.RecentComicsView, basename="recent")
|
router.register(r'recent', rest.RecentComicsView, basename="recent")
|
||||||
router.register(r'history', rest.HistoryViewSet, basename='history')
|
router.register(r'history', rest.HistoryViewSet, basename='history')
|
||||||
router.register(r'action', rest.ActionViewSet, basename='action')
|
router.register(r'action', rest.ActionViewSet, basename='action')
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ import uuid
|
|||||||
|
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
from django.utils.timezone import utc
|
utc = datetime.timezone.utc
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ class BrowseViewSet(viewsets.GenericViewSet):
|
|||||||
permission_classes = [permissions.IsAuthenticated]
|
permission_classes = [permissions.IsAuthenticated]
|
||||||
lookup_field = 'selector'
|
lookup_field = 'selector'
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self) -> None:
|
||||||
return
|
return
|
||||||
|
|
||||||
def list(self, request: Request) -> Response:
|
def list(self, request: Request) -> Response:
|
||||||
@@ -302,8 +302,8 @@ class ImageViewSet(viewsets.ViewSet):
|
|||||||
renderer_classes = [PassthroughRenderer]
|
renderer_classes = [PassthroughRenderer]
|
||||||
|
|
||||||
@swagger_auto_schema(responses={status.HTTP_200_OK: "A Binary Image response"})
|
@swagger_auto_schema(responses={status.HTTP_200_OK: "A Binary Image response"})
|
||||||
def retrieve(self, _request: Request, parent_lookup_selector: UUID, page: int) -> FileResponse:
|
def retrieve(self, _request: Request, selector: UUID, page: int) -> FileResponse:
|
||||||
book = models.ComicBook.objects.get(selector=parent_lookup_selector)
|
book = models.ComicBook.objects.get(selector=selector)
|
||||||
img, content = book.get_image(int(page) - 1)
|
img, content = book.get_image(int(page) - 1)
|
||||||
self.renderer_classes[0].media_type = content
|
self.renderer_classes[0].media_type = content
|
||||||
return FileResponse(img, content_type=content)
|
return FileResponse(img, content_type=content)
|
||||||
|
|||||||
921
frontend/package-lock.json
generated
921
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,7 @@
|
|||||||
"@fortawesome/fontawesome-svg-core": "^6.1.2",
|
"@fortawesome/fontawesome-svg-core": "^6.1.2",
|
||||||
"@fortawesome/free-solid-svg-icons": "^6.1.2",
|
"@fortawesome/free-solid-svg-icons": "^6.1.2",
|
||||||
"@fortawesome/vue-fontawesome": "^3.0.1",
|
"@fortawesome/vue-fontawesome": "^3.0.1",
|
||||||
"axios": "^0.27.2",
|
"axios": "1.8.2",
|
||||||
"bootstrap": "^5.2.0",
|
"bootstrap": "^5.2.0",
|
||||||
"hammerjs": "^2.0.8",
|
"hammerjs": "^2.0.8",
|
||||||
"jwt-decode": "^3.1.2",
|
"jwt-decode": "^3.1.2",
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
"vue-toast-notification": "3.0",
|
"vue-toast-notification": "3.0",
|
||||||
"vuejs-paginate-next": "^1.0.2",
|
"vuejs-paginate-next": "^1.0.2",
|
||||||
"vuex": "^4.0.0",
|
"vuex": "^4.0.0",
|
||||||
"webpack": "^5.74.0"
|
"webpack": "5.94.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.12.16",
|
"@babel/core": "^7.12.16",
|
||||||
|
|||||||
2196
poetry.lock
generated
2196
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,55 +1,46 @@
|
|||||||
[tool.black]
|
[project]
|
||||||
line_length = 119
|
|
||||||
|
|
||||||
[tool.poetry]
|
|
||||||
name = "cbwebreader"
|
name = "cbwebreader"
|
||||||
version = "1.1.1"
|
version = "1.1.1"
|
||||||
description = "CBR/Z Web Reader"
|
description = "CBR/Z Web Reader"
|
||||||
authors = ["ajurna <ajurna@gmail.com>"]
|
readme = "README.md"
|
||||||
license = "Creative Commons Attribution-ShareAlike 4.0 International License"
|
requires-python = ">=3.13"
|
||||||
|
dependencies = [
|
||||||
|
"dj-database-url>=2.3.0",
|
||||||
|
"django>=5.1.7",
|
||||||
|
"django-boost>=2.1",
|
||||||
|
"django-bootstrap4>=25.1",
|
||||||
|
"django-cors-headers>=4.7.0",
|
||||||
|
"django-csp>=3.8",
|
||||||
|
"django-extensions>=3.2.3",
|
||||||
|
"django-filter>=25.1",
|
||||||
|
"django-imagekit>=5.0.0",
|
||||||
|
"django-permissions-policy>=4.25.0",
|
||||||
|
"django-silk>=5.3.2",
|
||||||
|
"django-sri>=0.8.0",
|
||||||
|
"django-webpack-loader>=3.1.1",
|
||||||
|
"djangorestframework>=3.16.0",
|
||||||
|
"djangorestframework-simplejwt>=5.5.0",
|
||||||
|
"drf-yasg>=1.21.10",
|
||||||
|
"flake8>=7.2.0",
|
||||||
|
"flake8-annotations>=3.1.1",
|
||||||
|
"gunicorn>=23.0.0",
|
||||||
|
"loguru>=0.7.3",
|
||||||
|
"mysqlclient>=2.2.7",
|
||||||
|
"pillow>=11.1.0",
|
||||||
|
"psycopg2>=2.9.10",
|
||||||
|
"pymupdf>=1.25.5",
|
||||||
|
"python-dotenv>=1.1.0",
|
||||||
|
"rarfile>=4.2",
|
||||||
|
]
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[dependency-groups]
|
||||||
python = "^3.10"
|
dev = [
|
||||||
Django = "4.1.1"
|
"coverage>=7.8.0",
|
||||||
gunicorn = "^20.0.4"
|
"ipython>=9.0.2",
|
||||||
dj-database-url = "^1.0.0"
|
"mypy>=1.15.0",
|
||||||
python-dotenv = "^0.21.0"
|
"pre-commit>=4.2.0",
|
||||||
loguru = "^0.6.0"
|
"pylint>=3.3.6",
|
||||||
django-silk = "^5.0.0"
|
"pylint-django>=2.6.1",
|
||||||
mysqlclient = "^2.0.1"
|
"pyopenssl>=25.0.0",
|
||||||
psycopg2 = "^2.8.6"
|
"werkzeug>=3.1.3",
|
||||||
rarfile = "^4.0"
|
]
|
||||||
django-extensions = "^3.2.1"
|
|
||||||
Pillow = "^9.1.1"
|
|
||||||
django-imagekit = "^4.0.2"
|
|
||||||
PyMuPDF = "~1.20.2"
|
|
||||||
django-bootstrap4 = "^22.1"
|
|
||||||
django-csp = "^3.7"
|
|
||||||
django-boost = "^2.1"
|
|
||||||
django-sri = "^0.5.0"
|
|
||||||
django-permissions-policy = "^4.9.0"
|
|
||||||
djangorestframework = "^3.13.1"
|
|
||||||
django-filter = "^22.1"
|
|
||||||
django-cors-headers = "^3.13.0"
|
|
||||||
djangorestframework-simplejwt = "^5.2.0"
|
|
||||||
django-webpack-loader = "^1.6.0"
|
|
||||||
drf-yasg = "^1.20.0"
|
|
||||||
drf-extensions = "^0.7.1"
|
|
||||||
flake8 = "^5.0.4"
|
|
||||||
flake8-annotations = "^2.9.1"
|
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
|
||||||
mypy = "^0.971"
|
|
||||||
Werkzeug = "^2.2"
|
|
||||||
pyOpenSSL = "^22.0.0"
|
|
||||||
ipython = "^8.4.0"
|
|
||||||
coverage = "^6.2"
|
|
||||||
pre-commit = "^2.20.0"
|
|
||||||
|
|
||||||
[tool.poetry.group.dev.dependencies]
|
|
||||||
pylint = "^2.15.0"
|
|
||||||
pylint-django = "^2.5.3"
|
|
||||||
|
|
||||||
[build-system]
|
|
||||||
requires = ["poetry-core>=1.0.0"]
|
|
||||||
build-backend = "poetry.core.masonry.api"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user