- Add media_folder field to Post model for organized file storage
- Create MediaConfig class for centralized media management settings
- Update community routes to use post-specific media folders
- Add thumbnail generation for uploaded images
- Implement structured folder layout: app/static/media/posts/{post_folder}/
- Add utility functions for image and GPX file handling
- Create media management script for migration and maintenance
- Add proper file validation and MIME type checking
- Include routes for serving images, thumbnails, and GPX files
- Maintain backward compatibility with existing uploads
- Add comprehensive documentation and migration tools
Each post now gets its own media folder with subfolders for:
- images/ (with thumbnails/ subfolder)
- gpx/
Post content remains in database for optimal query performance while
media files are organized in dedicated folders for better management.
29 lines
688 B
Python
29 lines
688 B
Python
"""Add media_folder to posts table
|
|
|
|
This migration adds a media_folder column to the posts table to support
|
|
organized file storage for each post.
|
|
|
|
Usage:
|
|
flask db upgrade
|
|
|
|
Revision ID: add_media_folder
|
|
"""
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
# revision identifiers
|
|
revision = 'add_media_folder'
|
|
down_revision = None
|
|
depends_on = None
|
|
|
|
def upgrade():
|
|
"""Add media_folder column to posts table"""
|
|
# Add the media_folder column
|
|
op.add_column('posts', sa.Column('media_folder', sa.String(100), nullable=True))
|
|
|
|
def downgrade():
|
|
"""Remove media_folder column from posts table"""
|
|
# Remove the media_folder column
|
|
op.drop_column('posts', 'media_folder')
|