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.
60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
from pathlib import Path
|
|
from typing import List
|
|
|
|
from wrolpi.common import get_media_directory, wrol_mode_check
|
|
from wrolpi.errors import InvalidFile
|
|
|
|
|
|
def filter_parent_directories(directories: List[Path]) -> List[Path]:
|
|
"""
|
|
Remove parent directories if their children are in the list.
|
|
|
|
>>> filter_parent_directories([Path('foo'), Path('foo/bar'), Path('baz')])
|
|
[Path('foo/bar'), Path('baz')]
|
|
"""
|
|
unique_children = set()
|
|
for directory in sorted(directories):
|
|
for parent in directory.parents:
|
|
# Remove any parent of this child.
|
|
if parent in unique_children:
|
|
unique_children.remove(parent)
|
|
unique_children.add(directory)
|
|
|
|
# Restore the original order.
|
|
new_directories = [i for i in directories if i in unique_children]
|
|
return new_directories
|
|
|
|
|
|
def list_files(directories: List[str]) -> List[Path]:
|
|
"""
|
|
List all files down to the directories provided. This includes all parent directories of the directories.
|
|
"""
|
|
media_directory = get_media_directory()
|
|
|
|
# Always display the media_directory files.
|
|
paths = list(media_directory.iterdir())
|
|
|
|
if directories:
|
|
directories = [media_directory / i for i in directories if i]
|
|
directories = filter_parent_directories(directories)
|
|
for directory in directories:
|
|
directory = media_directory / directory
|
|
for parent in directory.parents:
|
|
is_relative_to = str(media_directory).startswith(str(parent))
|
|
if parent == Path('.') or is_relative_to:
|
|
continue
|
|
paths.extend(parent.iterdir())
|
|
paths.extend(directory.iterdir())
|
|
|
|
return paths
|
|
|
|
|
|
@wrol_mode_check
|
|
def delete_file(file: str):
|
|
"""
|
|
Delete a file in the media directory.
|
|
"""
|
|
file = get_media_directory() / file
|
|
if file.is_dir() or not file.is_file():
|
|
raise InvalidFile(f'Invalid file {file}')
|
|
file.unlink()
|