fix a bunch is settings

This commit is contained in:
2025-05-30 20:32:40 +02:00
parent 43f29f9a46
commit c09a5c758e
10 changed files with 172 additions and 148 deletions

View File

@@ -1,6 +1,6 @@
from flask import Blueprint, jsonify, request, abort
from flask_login import login_required, current_user
from models import db, Room, RoomFile, TrashedFile
from models import db, Room, RoomFile, TrashedFile, UserStarredFile
from utils import user_has_permission, clean_path
import os
from datetime import datetime
@@ -99,29 +99,34 @@ def permanently_delete_file(room_id, trash_id):
@trash_bp.route('/<int:room_id>/trash/empty', methods=['POST'])
@login_required
def empty_trash(room_id):
room = Room.query.get_or_404(room_id)
if not user_has_permission(room, 'can_delete'):
abort(403)
# Get all trashed files for this room
trashed_files = TrashedFile.query.filter_by(room_id=room_id).all()
room_files = RoomFile.query.filter_by(room_id=room_id, deleted=True).all()
# Delete physical files
room_dir = os.path.join('/data/rooms', str(room_id))
for file in trashed_files + room_files:
try:
if file.type == 'file':
file_path = os.path.join(room_dir, file.original_path if hasattr(file, 'original_path') else file.path, file.name)
"""Empty the trash for a specific room."""
try:
# Get all trashed files
trashed_files = TrashedFile.query.filter_by(room_id=room_id).all()
# Delete physical files first
for file in trashed_files:
try:
file_path = os.path.join(current_app.config['UPLOAD_FOLDER'], str(room_id), file.name)
if os.path.exists(file_path):
os.remove(file_path)
except Exception as e:
print(f"Error deleting physical file {file.name}: {str(e)}")
continue
# Delete all trashed files from both tables
TrashedFile.query.filter_by(room_id=room_id).delete()
RoomFile.query.filter_by(room_id=room_id, deleted=True).delete()
db.session.commit()
return jsonify({'success': True})
except Exception as e:
print(f"Error deleting physical file {file.name}: {str(e)}")
continue
# Delete all starred file references for the trashed files
room_files = RoomFile.query.filter_by(room_id=room_id, deleted=True).all()
for file in room_files:
UserStarredFile.query.filter_by(file_id=file.id).delete()
# Delete all trashed files from both tables
TrashedFile.query.filter_by(room_id=room_id).delete()
RoomFile.query.filter_by(room_id=room_id, deleted=True).delete()
db.session.commit()
return jsonify({'success': True})
except Exception as e:
db.session.rollback()
print(f"Error emptying trash: {str(e)}")
return jsonify({'success': False, 'error': str(e)}), 500