Add comprehensive edited media management with expandable cards UI
- Optimized delete modal for light/dark modes with modern gradients - Added edit_count tracking to media library with warnings in delete confirmation - Enhanced PlayerEdit model with CASCADE delete on foreign keys - Improved player management page to show latest 3 edited files with image previews - Created new edited_media route and template with full version history - Implemented horizontal expandable cards with two-column layout - Added interactive version selection with thumbnail grid - Included original file in versions list with source badge - Fixed deletion workflow to clean up PlayerEdit records and edited_media folders - Enhanced UI with smooth animations, hover effects, and dark mode support
This commit is contained in:
@@ -39,8 +39,14 @@ def content_list():
|
||||
@login_required
|
||||
def media_library():
|
||||
"""View all media files in the library."""
|
||||
from app.models.player_edit import PlayerEdit
|
||||
|
||||
media_files = Content.query.order_by(Content.uploaded_at.desc()).all()
|
||||
|
||||
# Add edit count to each media item
|
||||
for media in media_files:
|
||||
media.edit_count = PlayerEdit.query.filter_by(content_id=media.id).count()
|
||||
|
||||
# Group by content type
|
||||
images = [m for m in media_files if m.content_type == 'image']
|
||||
videos = [m for m in media_files if m.content_type == 'video']
|
||||
@@ -74,6 +80,21 @@ def delete_media(media_id: int):
|
||||
os.remove(file_path)
|
||||
log_action('info', f'Deleted physical file: {filename}')
|
||||
|
||||
# Delete edited media archive folder if it exists
|
||||
import shutil
|
||||
edited_media_dir = os.path.join(current_app.config['UPLOAD_FOLDER'], 'edited_media', str(media.id))
|
||||
if os.path.exists(edited_media_dir):
|
||||
shutil.rmtree(edited_media_dir)
|
||||
log_action('info', f'Deleted edited media archive for content ID {media.id}')
|
||||
|
||||
# Delete associated player edit records first
|
||||
from app.models.player_edit import PlayerEdit
|
||||
edit_records = PlayerEdit.query.filter_by(content_id=media.id).all()
|
||||
if edit_records:
|
||||
for edit in edit_records:
|
||||
db.session.delete(edit)
|
||||
log_action('info', f'Deleted {len(edit_records)} edit record(s) for content: {filename}')
|
||||
|
||||
# Remove from all playlists (this will cascade properly)
|
||||
db.session.delete(media)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user