From 961f17c2f5532d3e80c105bc6e2391669ff0cf5c Mon Sep 17 00:00:00 2001 From: XD-DENG Date: Sat, 8 Jul 2017 11:39:59 +0800 Subject: [PATCH] Ensure image files & Record can be cleaned when a user is removed --- app.py | 7 +++++++ database.py | 4 +++- database_file/images.db | Bin 12288 -> 12288 bytes database_file/notes.db | Bin 12288 -> 12288 bytes database_file/users.db | Bin 12288 -> 12288 bytes ...e9ae56d722fc3966bb78da4ce48f9a6-flask.png} | Bin 6 files changed, 10 insertions(+), 1 deletion(-) rename image_pool/{e7c589f2627e1dac3fb9d57ad9ccd6066e67ce31-flask.png => cbebc37b8e9ae56d722fc3966bb78da4ce48f9a6-flask.png} (100%) diff --git a/app.py b/app.py index d956d9f..b566f80 100644 --- a/app.py +++ b/app.py @@ -162,6 +162,13 @@ def FUN_delete_user(id): if session.get("current_user", None) == "ADMIN": if id == "ADMIN": # ADMIN account can't be deleted. return abort(403) + + # [1] Delete this user's images in image pool + images_to_remove = [x[0] for x in list_images_for_user(id)] + for f in images_to_remove: + image_to_delete_from_pool = [y for y in [x for x in os.listdir(app.config['UPLOAD_FOLDER'])] if y.split("-", 1)[0] == f][0] + os.remove(os.path.join(app.config['UPLOAD_FOLDER'], image_to_delete_from_pool)) + # [2] Delele the records in database files delete_user_from_db(id) return(redirect(url_for("FUN_admin"))) else: diff --git a/database.py b/database.py index 66244ae..d05efbc 100644 --- a/database.py +++ b/database.py @@ -42,7 +42,9 @@ def delete_user_from_db(id): _conn.commit() _conn.close() - # when we delete a user from database USERS, we also need to delete all his or her images data from database IMAGES + # when we delete a user from database USERS, we also need to + # [1] delete all his or her images from image pool (done in app.py) + # [2] delete all his or her images records from database IMAGES _conn = sqlite3.connect(image_db_file_location) _c = _conn.cursor() _c.execute("delete from images where owner = '" + id + "';") diff --git a/database_file/images.db b/database_file/images.db index 1b63bde8744ddcb0370844c65570f475f07cd794..8cd3d68df2b6533e004ed4801f2935479b94dc12 100644 GIT binary patch delta 610 zcma*jyG{Z@6b4|3fQg9^DhrJm5(^D1Gjry;-3A&8E!Dye%+(t~1S%VR1Pw1>ZDWWJ zV&hxz5^l887(;UE|3Clt(0}MZZs+SyJMDaZ(SNCIl$VumIVwk+?~A+F&DmM0m~QPS z)G4LY^WzAjYvsn%`hK}F>AlpK>W9mp%lEZuZ92Jqtqo5X<}X&Z zIx;!uH5x*VDo_+2JtV^d1qG6FI8i{~IXF5zzP$E*WK0)>n?7e?S}ezI0<<}63sESo z9mrCtbe_pEFmH7*!UZcW7mh?qWRz#Y1U)pF99eYI{g39VkX$n@?y7n8SqC{sMZ`Ti z!oxQnR0fJ7dpU?jXHWxmN^Q829-=ZTzDA^HG;c4W{}p#@LfP+Sdu{{dDQBa~F* z&yB9AMnDRi4+C&uaT|EA1t}bRP0>E+m_S`(F4`DkY-_EmTa78 zo@A1iWMpP&ng&EE#)(PEhN-C*sVQa_W|kJ2LagGB?y-(8zMg(?%Qml)4-)_YX7ej+ delta 157 zcmZojXh@hK&6qt=#+fmDW5QZ~MwiWe0k5$8XSTuX>4R=VytIqVrgk&k&&2@XlS0CW^9yXn4D&sWRh%PY;I{_WMOP< ioNQ=loNAb2V3=x>XqIM~lqtk2?&ywY-R4#DVFCbblPA3Z diff --git a/database_file/users.db b/database_file/users.db index eecd029ea12463ef9f834f860a761c14a60c42e1..ce5a1a1fbd9ed5c5a6865bfc7e89e73f5572de8c 100644 GIT binary patch delta 141 zcmZojXh@hK&FDE%#+lJ`W5ODKCcfL7`2^1KxwEhcHu6TeSR|(z8Ce)7rkJIs86+AT znVA`wS|*toS|pkqr&*YoTN)c%7#SO{tMn@N4Pd_FG1_m}q76AUuBiR4| delta 141 zcmZojXh@hK&FDN)#+lK1W5ODKCjOn9`2^1KxwEneHu5?-87G;Uq$F9ICMTJiCYzfX z8(SJCn;V!L8d#WESSF?#S|phm8XBdTTNoP~7^I{cTcjEo8z-40TUsO=r=%vPO;(nF t#rS+PpTZ@61^!