59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
import os
|
|
import shutil
|
|
from app import create_app
|
|
from models import db, RoomFile, Room, RoomMemberPermission
|
|
from sqlalchemy import text
|
|
|
|
app = create_app()
|
|
|
|
def clear_all_data():
|
|
with app.app_context():
|
|
# Delete records in the correct order to handle foreign key constraints
|
|
# 1. Delete all RoomFile records from the database
|
|
RoomFile.query.delete()
|
|
print("All RoomFile records deleted.")
|
|
|
|
# 2. Delete all RoomMemberPermission records
|
|
RoomMemberPermission.query.delete()
|
|
print("All RoomMemberPermission records deleted.")
|
|
|
|
# 3. Delete all room_members associations
|
|
db.session.execute(text('DELETE FROM room_members'))
|
|
print("All room_members associations deleted.")
|
|
|
|
# 4. Delete all Room records
|
|
Room.query.delete()
|
|
print("All Room records deleted.")
|
|
|
|
# Commit the database changes
|
|
db.session.commit()
|
|
print("Database cleanup completed.")
|
|
|
|
def clear_filesystem():
|
|
# 1. Clear the data/rooms directory
|
|
data_root = os.path.join(os.path.dirname(__file__), 'data', 'rooms')
|
|
if os.path.exists(data_root):
|
|
for item in os.listdir(data_root):
|
|
item_path = os.path.join(data_root, item)
|
|
if os.path.isfile(item_path):
|
|
os.remove(item_path)
|
|
elif os.path.isdir(item_path):
|
|
shutil.rmtree(item_path)
|
|
print("Cleared data/rooms directory")
|
|
|
|
# 2. Clear the uploads directory except for profile_pics
|
|
uploads_dir = os.path.join(os.path.dirname(__file__), 'uploads')
|
|
if os.path.exists(uploads_dir):
|
|
for item in os.listdir(uploads_dir):
|
|
if item != 'profile_pics':
|
|
item_path = os.path.join(uploads_dir, item)
|
|
if os.path.isfile(item_path):
|
|
os.remove(item_path)
|
|
elif os.path.isdir(item_path):
|
|
shutil.rmtree(item_path)
|
|
print("Cleared uploads directory")
|
|
|
|
if __name__ == '__main__':
|
|
clear_all_data()
|
|
clear_filesystem()
|
|
print("Cleanup completed successfully!") |