Implement organized media folder structure for community posts
- 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.
This commit is contained in:
28
migrations/add_media_folder.py
Normal file
28
migrations/add_media_folder.py
Normal file
@@ -0,0 +1,28 @@
|
||||
"""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')
|
||||
Reference in New Issue
Block a user