Upgrading base packages. Fixing failing test from merge.

This commit is contained in:
Roland 2022-01-31 21:45:46 -07:00
parent b84c6d5149
commit c79e28ff02
No known key found for this signature in database
GPG key ID: 9D6DBD3ACF11AB93
5 changed files with 26 additions and 38 deletions

View file

@ -3,11 +3,12 @@ from typing import List
from urllib.request import Request
from sanic import response
from sanic_ext import validate
from sanic_ext.extensions.openapi import openapi
from wrolpi.common import get_media_directory
from wrolpi.errors import InvalidFile
from wrolpi.root_api import get_blueprint, json_response
from wrolpi.schema import validate_doc
from . import lib, schema
bp = get_blueprint('Files', '/api/files')
@ -42,12 +43,10 @@ def paths_to_files(paths: List[pathlib.Path]):
@bp.post('/')
@validate_doc(
'List files in a directory',
consumes=schema.FilesRequest,
)
async def get_files(_: Request, data: dict):
directories = data.get('directories') or []
@openapi.description('List files in a directory')
@validate(schema.FilesRequest)
async def get_files(_: Request, body: schema.FilesRequest):
directories = body.directories or []
files = lib.list_files(directories)
files = paths_to_files(files)
@ -55,13 +54,10 @@ async def get_files(_: Request, data: dict):
@bp.post('/delete')
@validate_doc(
'Delete a single file. Returns an error if WROL Mode is enabled.',
consumes=schema.DeleteRequest,
)
async def delete_file(_: Request, data: dict):
file = data.get('file')
if not file:
@openapi.description('Delete a single file. Returns an error if WROL Mode is enabled.')
@validate(schema.DeleteRequest)
async def delete_file(_: Request, body: schema.DeleteRequest):
if not body.file:
raise InvalidFile('file cannot be empty')
lib.delete_file(file)
lib.delete_file(body.file)
return response.empty()

View file

@ -1,9 +1,12 @@
from sanic_openapi import doc
from dataclasses import dataclass, field
from typing import List
@dataclass
class FilesRequest:
directories = doc.List(doc.String())
directories: List[str] = field(default_factory=list)
@dataclass
class DeleteRequest:
file = doc.String()
file: str

View file

@ -8,6 +8,7 @@ from sanic_ext.extensions.openapi import openapi
from wrolpi.common import logger, wrol_mode_check, make_media_directory, \
get_media_directory
from wrolpi.errors import UnknownDirectory
from wrolpi.root_api import json_response
from wrolpi.schema import JSONErrorResponse
from .lib import get_minimal_channels, delete_channel, update_channel, get_channel, create_channel
@ -43,19 +44,9 @@ def channel_get(_: Request, link: str):
@validate(ChannelPostRequest)
@wrol_mode_check
def channel_post(_: Request, body: ChannelPostRequest):
try:
# Channel directory is relative to the media directory. Channel directory may not be in "videos" directory!
body.directory = get_media_directory() / body.directory
except UnknownDirectory:
if body.mkdir:
make_media_directory(body.directory)
body.directory = get_relative_to_media_directory(body.directory)
else:
raise
# Channel directory is relative to the media directory. Channel directory may not be in "videos" directory!
data['directory'] = get_media_directory() / data['directory']
if data.get('mkdir') is True:
make_media_directory(data['directory'])
body.directory = get_media_directory() / body.directory
if not body.directory.is_dir() and body.mkdir:
make_media_directory(body.directory)
channel = create_channel(body.__dict__) # TODO don't use the dataclass as a dict.
@ -75,7 +66,7 @@ def channel_post(_: Request, body: ChannelPostRequest):
@validate(ChannelPutRequest)
@wrol_mode_check
def channel_update(_: Request, link: str, body: ChannelPutRequest):
channel = update_channel(body.__dict__, link)
channel = update_channel(body.__dict__, link) # TODO don't use the dataclass as a dict.
return response.raw('', HTTPStatus.NO_CONTENT,
headers={'Location': f'/api/videos/channels/{channel.link}'})

View file

@ -611,9 +611,7 @@ def test_download_channel_no_refresh(test_session, download_channel, video_downl
def test_channel_post_directory(test_session, test_client, test_directory):
"""
A Channel can be created with or without an existing directory.
"""
"""A Channel can be created with or without an existing directory."""
# Channel can be created with a missing directory.
data = dict(name='foo', directory='foo')
request, response = test_client.post('/api/videos/channels', content=json.dumps(data))

View file

@ -5,10 +5,10 @@ mock==4.0.3
Pillow==9.0.0
Pint==0.18
psycopg2-binary==2.9.3
pytest-asyncio==0.17.0
pytest-asyncio==0.17.2
pytest==6.2.5
pytz==2021.3
PyYAML==5.3.1
PyYAML==6.0
requests==2.27.1
sanic-ext==22.1.2
sanic-testing==0.8.2
@ -18,4 +18,4 @@ SQLAlchemy==1.3.22
srt==3.5.0
websockets==10.1
webvtt-py==0.4.6
yt-dlp==2021.12.27
yt-dlp==2022.1.21