From f5938c558627f0317165b642b31ea7a919d5b3d8 Mon Sep 17 00:00:00 2001 From: Bryce Date: Sun, 3 Aug 2025 12:18:54 -0700 Subject: [PATCH] improvement --- .gitignore | 1 + __pycache__/config.cpython-310.pyc | Bin 766 -> 0 bytes __pycache__/manage.cpython-310.pyc | Bin 1720 -> 0 bytes app/__pycache__/routes.cpython-310.pyc | Bin 2018 -> 0 bytes app/routes.py | 68 +++++++++++++- app/templates/index.html | 107 ++++++++++++----------- app/templates/partials/folders_list.html | 38 +++++--- test_edit_functionality.py | 75 ++++++++++++++++ 8 files changed, 224 insertions(+), 65 deletions(-) create mode 100644 .gitignore delete mode 100644 __pycache__/config.cpython-310.pyc delete mode 100644 __pycache__/manage.cpython-310.pyc delete mode 100644 app/__pycache__/routes.cpython-310.pyc create mode 100644 test_edit_functionality.py 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 9d1377a57c1d7a5fd65a24ac38d164d0842ead2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZuuO>fgc5ZzsWk|rSnByQY&2u4sY5kfJkTcW0^h|QtCtgP%dG58~0J4MO0-1!3> z;Dq=!-1o|fzrX=8YqwP-SZSZ;&Cblu%qu#b7J{?>_G$S8BlJ^|-J=5;!Y%g!7-Bd@ z5jsMQFzq8^+7*c~Fr68|434j~h;YmaGe46^V>m#L^$Rl5bgppsXh4Q=%O?OFMVKMT z)!yk}42Hkr)gB{}dCfK8_n979%!q7es;bf)75RCxkgdQU&HRua`)AuO$gknI<1UMgyLnM1%!Q_! zM*Fvoy7PK5k5?N(AW3~(+5k4{;U2be?fpj%5WkV*0T?%OFbpD+NM{A2knyY#o59pEgaH+VslWn|R_F)eczPuEl#Z#sgi7@ zt0tAtA<|;}JYJ`jw5sNBM;9uz9-MTfqiZ3YO|i^Fay~DnXR?DQVSEp;|(x^X)o5=RTa> zb5fsdsgnCz`UjMvMB;^iX&>nb#Z27<`}hch%z!pzv7=TGoNcW3~+(u zpFHd*)Tgq;qlktH%{rXIGj#fnE41-_@W6`Fz>n&dB03sy_3d#JxQ~WtuubI&SO7}8mTz+lQ8FEJ@ym-kh{HsvI<`+ za7*fH+Js^;56pi;E`dO+6e0f!Ooqaj|}Ic$c_YVOb+8Ci){b$y1$9rWYZBNO&>LzB&~pqJ>CQBHnn;BQmKOENOT?C7t-$)hE32@0X+$te@bS)&$TsMGsHMkiKOnYD z5J6*&*5w1VfuuNv6a9Ov@dUE^N4a|t#{CG8Lwh0(xRhaXNQ=x$ssTe8Z-)tIRP-Y* z-Td0d<`&=neCK9^fAM9jv9Zav8b0hB+nYN(8`~Q)G|ra`y;LjEjxPaDVXw!TTQ^l%_FG-9ancrPtVkftQ8*E&!Ow-XN{e-#ubw`=H^Jjo~)4mfL`pP=)b1_hrb{Ijkd948`Mv=050=iFCv=L8F z1KpgbdRioY%F-xE|C(uwVX+X6P@3iWR%9H~sF2Q|aXku!^4&=>^VJJniNSn~J z5Rw-8^2iOMQ0QTyEZ~A8Wx}G$fHQc46?5gicRG2Vr_6{aiumI2L|oQy==pVl6sfVl kg7+Z%w{KW)1SszqlaSMF0Q* diff --git a/app/__pycache__/routes.cpython-310.pyc b/app/__pycache__/routes.cpython-310.pyc deleted file mode 100644 index 781d64ed64cfc0be2f7a2345cfb6cd77e84e5ade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2018 zcmai!&2Jk;6u@_8KkcmTBu!~j1Q@9)EK=em4GEyCRJ1{=pdTWw5WZNO%p_TN*K20S zG`7|iQn*@NIC8L${ZIG z=y%^R{=mWc%Ywmec(PwWFoTiUNJx_;v`G`QX%e*2*h=iCt#vbY61V9lUenWKD=sxl zFvp6^%`zv<<})X>=`*KU;r_VF+zDYGEB$1gkYnzQ;2e5JlNuK$Y`l z8p8}_J;}IupsXZ}I)iKL8#nmo$6MPg{F6`jR@OJzjg=6_E1MfzTkD(a+nZ}^Yp0~K zk1L*C6cjwAJMd(WKuDua##EXUGBk1{Tatz}8DVrphlaG;_Sngd2_c2IrJBbjLPf!=Et_`-$wlnqBA`pP`yQu+5E-ubHaWOwJA*1fyJ#?NlXvn)zG z$_yD(4y=oha+k z!`;V_OgG{3C}r7yGJ>HZ)jA`8;m`MroG^kpnd%gDGSx9x6mqpJ%{F96I?RGhKyHSn z^q8HS%o)*dja|s3gzV)cr=lTCIXxjA0(840YiP-GduHtCmd-8e6`k7)JX(gV_WQ&b zLj4TtvNoP&UT#k)P=P+?F81LV-$4})?dSIH^!nhE19aFNMs#dp+2Ly4xQ0tCqqvUZ0}z1){YiH^NQ3wg&DfGefC9VH zISwj?uPF+j!^f-+g3<-5F(AJA#?&`pQZNru#$onUVC&Z;7u=iB)QT2b25mJ-VUeuZ zrS7{{uLpr)(8_DIur^yQ;h_(#3uWtmsJop;OyFYY0@qv66ni(pHx%_PL@Yzog5i@{ S;=x^}mgxbl)fsrMSINJWhtw_r 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 + - - - +