fix a bunch is settings
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user