login
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from flask import Blueprint, render_template, request, jsonify, make_response
|
||||
from flask import Blueprint, render_template, request, jsonify, make_response, flash, redirect, url_for
|
||||
from flask_login import login_required, current_user
|
||||
from app import db
|
||||
from app.models import Folder, User
|
||||
import uuid
|
||||
@@ -6,22 +7,15 @@ import logging
|
||||
|
||||
main = Blueprint('main', __name__)
|
||||
|
||||
# For prototype, use a fixed user ID
|
||||
MOCK_USER_ID = 1
|
||||
|
||||
@main.route('/')
|
||||
@login_required
|
||||
def index():
|
||||
# Ensure the mock user exists
|
||||
user = db.session.get(User, MOCK_USER_ID)
|
||||
if not user:
|
||||
user = User(id=MOCK_USER_ID, email='prototype@example.com')
|
||||
db.session.add(user)
|
||||
db.session.commit()
|
||||
|
||||
folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all()
|
||||
# Get folders for the current authenticated user
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
return render_template('index.html', folders=folders)
|
||||
|
||||
@main.route('/api/folders/new', methods=['GET'])
|
||||
@login_required
|
||||
def new_folder_modal():
|
||||
# Return the add folder modal
|
||||
response = make_response(render_template('partials/folder_modal.html'))
|
||||
@@ -29,6 +23,7 @@ def new_folder_modal():
|
||||
return response
|
||||
|
||||
@main.route('/api/folders', methods=['POST'])
|
||||
@login_required
|
||||
def add_folder():
|
||||
try:
|
||||
# Get form data instead of JSON
|
||||
@@ -59,9 +54,9 @@ def add_folder():
|
||||
response.headers['HX-Reswap'] = 'outerHTML'
|
||||
return response
|
||||
|
||||
# Create new folder
|
||||
# Create new folder for the current user
|
||||
folder = Folder(
|
||||
user_id=MOCK_USER_ID,
|
||||
user_id=current_user.id,
|
||||
name=name.strip(),
|
||||
rule_text=rule_text.strip(),
|
||||
priority=int(priority) if priority else 0
|
||||
@@ -70,8 +65,8 @@ def add_folder():
|
||||
db.session.add(folder)
|
||||
db.session.commit()
|
||||
|
||||
# Get updated list of folders
|
||||
folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all()
|
||||
# Get updated list of folders for the current user
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
|
||||
# Return the updated folders list HTML
|
||||
response = make_response(render_template('partials/folders_list.html', folders=folders))
|
||||
@@ -91,22 +86,23 @@ def add_folder():
|
||||
return response
|
||||
|
||||
@main.route('/api/folders/<folder_id>', methods=['DELETE'])
|
||||
@login_required
|
||||
def delete_folder(folder_id):
|
||||
try:
|
||||
# Find the folder by ID
|
||||
folder = Folder.query.filter_by(id=folder_id, user_id=MOCK_USER_ID).first()
|
||||
# Find the folder by ID and ensure it belongs to the current user
|
||||
folder = Folder.query.filter_by(id=folder_id, user_id=current_user.id).first()
|
||||
|
||||
if not folder:
|
||||
# Folder not found
|
||||
folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all()
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
return render_template('partials/folders_list.html', folders=folders)
|
||||
|
||||
# Delete the folder
|
||||
db.session.delete(folder)
|
||||
db.session.commit()
|
||||
|
||||
# Get updated list of folders
|
||||
folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all()
|
||||
# Get updated list of folders for the current user
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
|
||||
# Return the updated folders list HTML
|
||||
return render_template('partials/folders_list.html', folders=folders)
|
||||
@@ -116,14 +112,15 @@ def delete_folder(folder_id):
|
||||
logging.exception("Error deleting folder: %s", e)
|
||||
db.session.rollback()
|
||||
# Return the folders list unchanged
|
||||
folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all()
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
return render_template('partials/folders_list.html', folders=folders)
|
||||
|
||||
@main.route('/api/folders/<folder_id>/edit', methods=['GET'])
|
||||
@login_required
|
||||
def edit_folder_modal(folder_id):
|
||||
try:
|
||||
# Find the folder by ID
|
||||
folder = Folder.query.filter_by(id=folder_id, user_id=MOCK_USER_ID).first()
|
||||
# Find the folder by ID and ensure it belongs to the current user
|
||||
folder = Folder.query.filter_by(id=folder_id, user_id=current_user.id).first()
|
||||
|
||||
if not folder:
|
||||
return jsonify({'error': 'Folder not found'}), 404
|
||||
@@ -139,14 +136,15 @@ def edit_folder_modal(folder_id):
|
||||
return jsonify({'error': 'Error retrieving folder'}), 500
|
||||
|
||||
@main.route('/api/folders/<folder_id>', methods=['PUT'])
|
||||
@login_required
|
||||
def update_folder(folder_id):
|
||||
try:
|
||||
# Find the folder by ID
|
||||
folder = Folder.query.filter_by(id=folder_id, user_id=MOCK_USER_ID).first()
|
||||
# Find the folder by ID and ensure it belongs to the current user
|
||||
folder = Folder.query.filter_by(id=folder_id, user_id=current_user.id).first()
|
||||
|
||||
if not folder:
|
||||
# Folder not found
|
||||
folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all()
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
return render_template('partials/folders_list.html', folders=folders)
|
||||
|
||||
# Get form data
|
||||
@@ -184,8 +182,8 @@ def update_folder(folder_id):
|
||||
|
||||
db.session.commit()
|
||||
|
||||
# Get updated list of folders
|
||||
folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all()
|
||||
# Get updated list of folders for the current user
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
|
||||
response = make_response(render_template('partials/folders_list.html', folders=folders))
|
||||
response.headers['HX-Trigger'] = 'close-modal'
|
||||
|
||||
Reference in New Issue
Block a user