files sorting and filter
This commit is contained in:
parent
bf6fffd52c
commit
3c7dbf327c
@ -18,24 +18,38 @@ app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
|
||||
@app.get("/files", response_class=HTMLResponse)
|
||||
async def list_files():
|
||||
files_html = ""
|
||||
db_files_info = []
|
||||
for root, _, files in os.walk(DIRECTORY):
|
||||
for file in files:
|
||||
if file.endswith(".db"):
|
||||
file_path = os.path.join(root, file)
|
||||
relative_path = os.path.relpath(file_path, DIRECTORY)
|
||||
try:
|
||||
file_size = os.path.getsize(file_path)
|
||||
creation_time = os.path.getctime(file_path)
|
||||
db_files_info.append({
|
||||
"relative_path": relative_path,
|
||||
"file_size": file_size,
|
||||
"creation_time": creation_time
|
||||
})
|
||||
except Exception as e:
|
||||
# Log or handle error for specific file without breaking the list
|
||||
print(f"Error accessing {file_path}: {e}")
|
||||
|
||||
# Sort files by creation time
|
||||
db_files_info.sort(key=lambda x: x["creation_time"])
|
||||
|
||||
files_html = ""
|
||||
for file_info in db_files_info:
|
||||
# convert to GB
|
||||
file_size = file_size / (1024 * 1024 * 1024)
|
||||
file_size_gb = file_info["file_size"] / (1024 * 1024 * 1024)
|
||||
files_html += f"""
|
||||
<li>
|
||||
{relative_path} ({file_size:.3f} GB)
|
||||
<a href="/data/{relative_path}" download="{relative_path}">Download</a>
|
||||
<button onclick="deleteFile('{relative_path}')">Delete</button>
|
||||
{file_info["relative_path"]} ({file_size_gb:.3f} GB)
|
||||
<a href="/data/{file_info["relative_path"]}" download="{file_info["relative_path"]}">Download</a>
|
||||
<button onclick="deleteFile('{file_info["relative_path"]}')">Delete</button>
|
||||
</li>
|
||||
"""
|
||||
except Exception as e:
|
||||
files_html += f"<li>Error accessing {relative_path}: {e}</li>"
|
||||
|
||||
return f"""
|
||||
<html>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user