diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fbfa7d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/*.pyc diff --git a/__pycache__/config.cpython-310.pyc b/__pycache__/config.cpython-310.pyc deleted file mode 100644 index 9d1377a..0000000 Binary files a/__pycache__/config.cpython-310.pyc and /dev/null differ diff --git a/__pycache__/manage.cpython-310.pyc b/__pycache__/manage.cpython-310.pyc deleted file mode 100644 index 076ce16..0000000 Binary files a/__pycache__/manage.cpython-310.pyc and /dev/null differ diff --git a/app/__pycache__/routes.cpython-310.pyc b/app/__pycache__/routes.cpython-310.pyc deleted file mode 100644 index 781d64e..0000000 Binary files a/app/__pycache__/routes.cpython-310.pyc and /dev/null differ diff --git a/app/routes.py b/app/routes.py index 678e728..af04790 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,4 +1,4 @@ -from flask import Blueprint, render_template, request +from flask import Blueprint, render_template, request, jsonify from app import db from app.models import Folder, User import uuid @@ -87,4 +87,68 @@ def delete_folder(folder_id): db.session.rollback() # Return the folders list unchanged folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all() - return render_template('partials/folders_list.html', folders=folders) \ No newline at end of file + return render_template('partials/folders_list.html', folders=folders) + +@main.route('/api/folders/', methods=['PUT']) +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() + + if not folder: + # Folder not found + folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all() + return render_template('partials/folders_list.html', folders=folders) + + # Get form data + name = request.form.get('name') + rule_text = request.form.get('rule_text') + priority = request.form.get('priority') + + if not name: + # Return the folders list unchanged with an error message + folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all() + return render_template('partials/folders_list.html', folders=folders) + + # Update folder + folder.name = name + folder.rule_text = rule_text + folder.priority = int(priority) if priority else None + + db.session.commit() + + # Get updated list of folders + folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all() + + # Return the updated folders list HTML + return render_template('partials/folders_list.html', folders=folders) + + except Exception as e: + # Print unhandled exceptions to the console as required + logging.exception("Error updating folder: %s", e) + db.session.rollback() + # Return the folders list unchanged + folders = Folder.query.filter_by(user_id=MOCK_USER_ID).all() + return render_template('partials/folders_list.html', folders=folders) + +@main.route('/api/folders/', methods=['GET']) +def get_folder(folder_id): + try: + # Find the folder by ID + folder = Folder.query.filter_by(id=folder_id, user_id=MOCK_USER_ID).first() + + if not folder: + return jsonify({'error': 'Folder not found'}), 404 + + # Return folder data as JSON + return jsonify({ + 'id': folder.id, + 'name': folder.name, + 'rule_text': folder.rule_text, + 'priority': folder.priority + }) + + except Exception as e: + # Print unhandled exceptions to the console as required + logging.exception("Error getting folder: %s", e) + return jsonify({'error': 'Error retrieving folder'}), 500 \ No newline at end of file diff --git a/app/templates/index.html b/app/templates/index.html index 1043cb7..cc5bce8 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -1,62 +1,32 @@ - + Email Organizer - Prototype + - - - +