mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 19:01:39 -04:00
commit 54d06bf8045fceaa2684348d110792e6833b170c
Author: Roland <roland@learningselfreliance.com>
Date: Sat Jan 29 16:46:14 2022 -0700
Can't delete files when WROL Mode is enabled.
commit 2d91f1983aae47bdb3f6dc7fc2bd2ae642c1126a
Author: Roland <roland@learningselfreliance.com>
Date: Sat Jan 29 16:37:42 2022 -0700
Fixing bug where files could not be deleted in series.
commit eed818c50682b19de9f18da2d4daedc54408cc49
Author: Roland <roland@learningselfreliance.com>
Date: Sat Jan 29 16:26:31 2022 -0700
Fixing fake_now to reset now() when complete.
commit 183e98cbec25784720ebaeabfac8af4a3fc87da8
Author: Roland <roland@learningselfreliance.com>
Date: Sat Jan 29 16:08:14 2022 -0700
Files can be deleted and downloaded.
commit c5bcd25a3da041f42b9e11eae804aa359ab9e985
Author: Roland <roland@learningselfreliance.com>
Date: Sat Jan 29 14:41:07 2022 -0700
Files can be deleted or downloaded.
commit 690b332bb4f89aa4e97ce2590b35bd4a71fefd87
Author: Roland <roland@learningselfreliance.com>
Date: Sat Jan 29 14:11:05 2022 -0700
File is opened in new tab when file is selected.
commit ba8ead6f3185d0a398c4f89cecb5958f5e7731a3
Author: Roland <roland@learningselfreliance.com>
Date: Sat Jan 29 13:32:32 2022 -0700
Removing files sort because React FE sorts them itself.
commit 4e04753234b11d615c5992bc08e9dd9fb7226c05
Author: Roland <roland@learningselfreliance.com>
Date: Sat Jan 29 13:29:52 2022 -0700
Duplicate directories are ignored.
commit c2f7d7929f37655e5c2d11767a512571263b35ef
Author: Roland <roland@learningselfreliance.com>
Date: Sat Jan 29 12:22:38 2022 -0700
Multiple directories can be requested.
commit 31678139c0799d0034d564cc1f8ae448234df90c
Author: Roland <roland@learningselfreliance.com>
Date: Fri Jan 28 17:21:33 2022 -0700
Files are displayed with the correct modified time. Files can be recursively viewed.
commit a2d10a1dd792e518c8c6ad8f699b5d416c3d07e4
Author: Roland <roland@learningselfreliance.com>
Date: Thu Jan 27 22:37:19 2022 -0700
Files can be viewed. Folders display their children.
66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
import pathlib
|
|
from typing import List
|
|
from urllib.request import Request
|
|
|
|
from sanic import response
|
|
|
|
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')
|
|
|
|
|
|
def paths_to_files(paths: List[pathlib.Path]):
|
|
media_directory = get_media_directory()
|
|
new_files = []
|
|
for path in paths:
|
|
stat = path.stat()
|
|
key = path.relative_to(media_directory)
|
|
modified = stat.st_mtime
|
|
if path.is_dir():
|
|
key = f'{key}/'
|
|
new_files.append(dict(
|
|
key=key,
|
|
modified=modified,
|
|
url=key,
|
|
name=path.name,
|
|
))
|
|
else:
|
|
# A File should know it's size.
|
|
new_files.append(dict(
|
|
key=key,
|
|
modified=modified,
|
|
size=stat.st_size,
|
|
url=key,
|
|
name=path.name,
|
|
))
|
|
return new_files
|
|
|
|
|
|
@bp.post('/')
|
|
@validate_doc(
|
|
'List files in a directory',
|
|
consumes=schema.FilesRequest,
|
|
)
|
|
async def get_files(_: Request, data: dict):
|
|
directories = data.get('directories') or []
|
|
|
|
files = lib.list_files(directories)
|
|
files = paths_to_files(files)
|
|
return json_response({'files': files})
|
|
|
|
|
|
@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:
|
|
raise InvalidFile('file cannot be empty')
|
|
lib.delete_file(file)
|
|
return response.empty()
|