diff --git a/app/models.py b/app/models.py index 8b88d17..4156eab 100644 --- a/app/models.py +++ b/app/models.py @@ -39,5 +39,6 @@ class Folder(Base): name = db.Column(db.String(255), nullable=False) rule_text = db.Column(db.Text) priority = db.Column(db.Integer) + organize_enabled = db.Column(db.Boolean, default=True) user = db.relationship('User', backref=db.backref('folders', lazy=True)) \ No newline at end of file diff --git a/app/routes.py b/app/routes.py index 731d2d6..a3a591f 100644 --- a/app/routes.py +++ b/app/routes.py @@ -116,6 +116,30 @@ def delete_folder(folder_id): folders = Folder.query.filter_by(user_id=current_user.id).all() return render_template('partials/folders_list.html', folders=folders) +@main.route('/api/folders//toggle', methods=['PUT']) +@login_required +def toggle_folder_organize(folder_id): + try: + # 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 + + # Toggle the organize_enabled flag + folder.organize_enabled = not folder.organize_enabled + + db.session.commit() + + # Return just the updated folder card HTML for this specific folder + return render_template('partials/folder_card.html', folder=folder) + + except Exception as e: + # Print unhandled exceptions to the console as required + logging.exception("Error toggling folder organize flag: %s", e) + db.session.rollback() + return jsonify({'error': 'An unexpected error occurred'}), 500 + @main.route('/api/folders//edit', methods=['GET']) @login_required def edit_folder_modal(folder_id): diff --git a/app/templates/partials/folder_card.html b/app/templates/partials/folder_card.html new file mode 100644 index 0000000..9dad1da --- /dev/null +++ b/app/templates/partials/folder_card.html @@ -0,0 +1,50 @@ +
+
+
+

{{ folder.name }}

+
+ + +
+
+ +
+

{{ folder.rule_text }}

+
+ +
+ {% if folder.priority == 1 %} + High Priority + {% elif folder.priority == -1 %} + Low Priority + {% else %} + Normal Priority + {% endif %} +
+ Organize: + + +
+
+
+
\ No newline at end of file diff --git a/app/templates/partials/folders_list.html b/app/templates/partials/folders_list.html index c416aa8..9fec5a4 100644 --- a/app/templates/partials/folders_list.html +++ b/app/templates/partials/folders_list.html @@ -1,43 +1,6 @@ -
+
{% for folder in folders %} -
-
-
-

{{ folder.name }}

-
- - -
-
- -
-

{{ folder.rule_text }}

-
- -
- {% if folder.priority == 1 %} - High Priority - {% elif folder.priority == -1 %} - Low Priority - {% else %} - Normal Priority - {% endif %} - 0 emails -
-
-
+ {% include 'partials/folder_card.html' %} {% else %}
@@ -45,7 +8,7 @@

No folders yet

Add your first folder to get started organizing your emails.

-