From f1798ea922074c44b58cee7934612b6e1c733c8c Mon Sep 17 00:00:00 2001 From: Koncept Kit <63216427+konceptkit@users.noreply.github.com> Date: Wed, 17 Dec 2025 01:33:47 +0700 Subject: [PATCH] Permission fix --- clear_permissions.sql | 17 +++++++++++++++++ seed_permissions_rbac.py | 21 +++++++++++++++++---- 2 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 clear_permissions.sql diff --git a/clear_permissions.sql b/clear_permissions.sql new file mode 100644 index 0000000..4c33e23 --- /dev/null +++ b/clear_permissions.sql @@ -0,0 +1,17 @@ +-- Clear all permissions and role_permissions +-- Run this BEFORE running seed_permissions_rbac.py + +BEGIN; + +-- Delete all role_permission mappings +DELETE FROM role_permissions; + +-- Delete all permissions +DELETE FROM permissions; + +COMMIT; + +-- Verify they're empty +SELECT 'Permissions cleared:' as message, COUNT(*) as count FROM permissions +UNION ALL +SELECT 'Role-permissions cleared:', COUNT(*) FROM role_permissions; diff --git a/seed_permissions_rbac.py b/seed_permissions_rbac.py index f3a01e6..619aea5 100755 --- a/seed_permissions_rbac.py +++ b/seed_permissions_rbac.py @@ -168,11 +168,24 @@ def seed_permissions(): # Step 1: Clear existing permissions and role_permissions print("\nšŸ“¦ Clearing existing permissions and role assignments...") - deleted_rp = db.query(RolePermission).delete() - deleted_p = db.query(Permission).delete() + + # Use raw SQL to ensure complete deletion + from sqlalchemy import text + db.execute(text("DELETE FROM role_permissions")) db.commit() - print(f"āœ“ Cleared {deleted_rp} role-permission mappings") - print(f"āœ“ Cleared {deleted_p} permissions") + db.execute(text("DELETE FROM permissions")) + db.commit() + + # Verify they're cleared + rp_count = db.execute(text("SELECT COUNT(*) FROM role_permissions")).scalar() + p_count = db.execute(text("SELECT COUNT(*) FROM permissions")).scalar() + + print(f"āœ“ Cleared role-permission mappings (verified: {rp_count} remaining)") + print(f"āœ“ Cleared permissions (verified: {p_count} remaining)") + + if rp_count > 0 or p_count > 0: + print(f"\nāš ļø WARNING: Tables not fully cleared! Stopping.") + return # Step 2: Create permissions print(f"\nšŸ“ Creating {len(PERMISSIONS)} permissions...")