batman
This commit is contained in:
commit
42f1d1012f
18 changed files with 399 additions and 0 deletions
0
app/utils/__init__.py
Normal file
0
app/utils/__init__.py
Normal file
BIN
app/utils/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
app/utils/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/utils/__pycache__/file_handler.cpython-312.pyc
Normal file
BIN
app/utils/__pycache__/file_handler.cpython-312.pyc
Normal file
Binary file not shown.
67
app/utils/file_handler.py
Normal file
67
app/utils/file_handler.py
Normal file
|
@ -0,0 +1,67 @@
|
|||
import os
|
||||
import markdown
|
||||
import secrets
|
||||
from flask import current_app
|
||||
from werkzeug.utils import secure_filename
|
||||
import json
|
||||
|
||||
def get_uri_map_path():
|
||||
"""Get the path to the URI mapping file"""
|
||||
return os.path.join(current_app.config['UPLOAD_FOLDER'], 'uri_map.json')
|
||||
|
||||
def load_uri_map():
|
||||
"""Load the URI mapping from file"""
|
||||
map_path = get_uri_map_path()
|
||||
if os.path.exists(map_path):
|
||||
with open(map_path, 'r') as f:
|
||||
return json.load(f)
|
||||
return {}
|
||||
|
||||
def save_uri_map(uri_map):
|
||||
"""Save the URI mapping to file"""
|
||||
with open(get_uri_map_path(), 'w') as f:
|
||||
json.dump(uri_map, f, indent=2)
|
||||
|
||||
def generate_unique_uri():
|
||||
"""Generate a unique URI for a file"""
|
||||
uri_map = load_uri_map()
|
||||
while True:
|
||||
uri = secrets.token_urlsafe(6) # Generate a short random string
|
||||
if uri not in uri_map:
|
||||
return uri
|
||||
|
||||
def save_file(file, custom_uri=None):
|
||||
"""Save the uploaded file to the upload folder and assign a URI"""
|
||||
# Secure the filename first
|
||||
filename = secure_filename(file.filename)
|
||||
|
||||
# Generate or use custom URI
|
||||
uri = custom_uri if custom_uri else generate_unique_uri()
|
||||
|
||||
# Save the file with its original name
|
||||
filepath = os.path.join(current_app.config['UPLOAD_FOLDER'], filename)
|
||||
file.save(filepath)
|
||||
|
||||
# Update the URI map
|
||||
uri_map = load_uri_map()
|
||||
uri_map[uri] = {
|
||||
'filename': filename,
|
||||
'path': filepath
|
||||
}
|
||||
save_uri_map(uri_map)
|
||||
|
||||
return uri, filename
|
||||
|
||||
def get_file_by_uri(uri):
|
||||
"""Get file info by URI"""
|
||||
uri_map = load_uri_map()
|
||||
if uri in uri_map:
|
||||
return uri_map[uri]
|
||||
return None
|
||||
|
||||
def read_markdown_file(filepath):
|
||||
"""Read and convert markdown file to HTML"""
|
||||
with open(filepath, 'r', encoding='utf-8') as f:
|
||||
md_content = f.read()
|
||||
html_content = markdown.markdown(md_content, extensions=['tables', 'fenced_code'])
|
||||
return html_content
|
Loading…
Add table
Add a link
Reference in a new issue