addet some features
This commit is contained in:
parent
0861ae20c3
commit
97e3262506
11 changed files with 1369 additions and 208 deletions
|
@ -1,11 +1,24 @@
|
|||
from flask import Blueprint, render_template, request, current_app, redirect, url_for, abort, flash
|
||||
import os
|
||||
from app.utils.file_handler import save_file, read_markdown_file, get_file_by_uri, load_uri_map
|
||||
|
||||
from app.utils.file_handler import save_file, read_markdown_file, get_file_by_uri, load_uri_map, save_uri_map
|
||||
from app.utils.utils import convert_markdown_to_html
|
||||
main_bp = Blueprint('main', __name__)
|
||||
|
||||
@main_bp.route('/', methods=['GET'])
|
||||
@main_bp.route('/', methods=['GET', 'POST'])
|
||||
def index():
|
||||
if request.method == 'POST':
|
||||
delete_uri = request.form.get('delete_uri')
|
||||
|
||||
if delete_uri:
|
||||
uri_map = load_uri_map()
|
||||
if delete_uri in uri_map:
|
||||
# Remove the document from the URI map
|
||||
del uri_map[delete_uri]
|
||||
save_uri_map(uri_map)
|
||||
else:
|
||||
flash(f'Document with URI "{delete_uri}" not found.')
|
||||
return redirect(url_for('main.index'))
|
||||
|
||||
# List all available documents
|
||||
uri_map = load_uri_map()
|
||||
documents = [{'uri': uri, 'filename': info['filename']} for uri, info in uri_map.items()]
|
||||
|
@ -14,22 +27,52 @@ def index():
|
|||
@main_bp.route('/upload', methods=['GET', 'POST'])
|
||||
def upload_file():
|
||||
if request.method == 'POST':
|
||||
if 'file' not in request.files:
|
||||
flash('No file part')
|
||||
return redirect(request.url)
|
||||
|
||||
file = request.files['file']
|
||||
custom_uri = request.form.get('custom_uri', '').strip()
|
||||
raw_url = request.form.get('raw_url', '').strip()
|
||||
|
||||
if file.filename == '':
|
||||
flash('No file selected')
|
||||
return redirect(request.url)
|
||||
if raw_url:
|
||||
# Handle raw URL input
|
||||
try:
|
||||
import requests
|
||||
response = requests.get(raw_url)
|
||||
if response.status_code == 200:
|
||||
content = response.text
|
||||
from io import BytesIO
|
||||
file = BytesIO(content.encode('utf-8'))
|
||||
filename = raw_url.split('/')[-1]
|
||||
if not filename.endswith('.md'):
|
||||
filename += '.md'
|
||||
# Create a FileStorage-like object that save_file can handle
|
||||
from werkzeug.datastructures import FileStorage
|
||||
file = FileStorage(
|
||||
stream=file,
|
||||
filename=filename,
|
||||
content_type='text/markdown'
|
||||
)
|
||||
uri, filename = save_file(file, custom_uri if custom_uri else None)
|
||||
return redirect(url_for('main.view_file', uri=uri))
|
||||
else:
|
||||
flash('Could not fetch content from URL')
|
||||
return redirect(request.url)
|
||||
except Exception as e:
|
||||
flash(f'Error fetching URL: {str(e)}')
|
||||
return redirect(request.url)
|
||||
|
||||
elif 'file' in request.files:
|
||||
file = request.files['file']
|
||||
|
||||
if file and file.filename.endswith('.md'):
|
||||
custom_uri = request.form.get('custom_uri', '').strip()
|
||||
uri, filename = save_file(file, custom_uri if custom_uri else None)
|
||||
return redirect(url_for('main.view_file', uri=uri))
|
||||
if file.filename == '':
|
||||
flash('No file selected and no URL provided')
|
||||
return redirect(request.url)
|
||||
|
||||
if file and file.filename.endswith('.md'):
|
||||
uri, filename = save_file(file, custom_uri if custom_uri else None)
|
||||
return redirect(url_for('main.view_file', uri=uri))
|
||||
else:
|
||||
flash('Only markdown files are allowed')
|
||||
else:
|
||||
flash('Only markdown files are allowed')
|
||||
flash('Please either upload a file or provide a URL')
|
||||
return redirect(request.url)
|
||||
|
||||
return render_template('upload.html')
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue