Files
moto-adv-website/migrations/add_chat_system.py
ske087 1661f5f588 feat: Complete chat system implementation and password reset enhancement
- Add comprehensive chat system with modern UI design
- Implement admin-based password reset system
- Fix template syntax errors and 500 server errors
- Add chat routes, API endpoints, and database models
- Enhance user interface with Tailwind CSS card-based design
- Implement community guidelines and quick action features
- Add responsive design for mobile and desktop compatibility
- Create support chat functionality with admin integration
- Fix JavaScript inheritance in base template
- Add database migration for chat system tables

Features:
 Modern chat interface with room management
 Admin-based password reset workflow
 Real-time chat with mobile app support
 Professional UI with gradient cards and hover effects
 Community guidelines and safety features
 Responsive design for all devices
 Error-free template rendering
2025-08-09 20:44:25 +03:00

161 lines
6.4 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Chat System Database Migration
Adds chat functionality to the Moto Adventure application.
"""
import os
import sys
from datetime import datetime
# Add the app directory to the Python path
sys.path.insert(0, '/opt/site')
from app import create_app, db
from app.models import ChatRoom, ChatMessage, ChatParticipant
def run_migration():
"""Run the chat system migration"""
app = create_app()
with app.app_context():
print(f"[{datetime.now()}] Starting chat system migration...")
try:
# Create the chat tables
print("Creating chat system tables...")
db.create_all()
# Get or create system user for welcome messages and room ownership
print("Setting up system user...")
from app.models import User
system_user = User.query.filter_by(email='system@motoadventure.local').first()
if not system_user:
system_user = User(
nickname='System',
email='system@motoadventure.local',
is_admin=True,
is_active=True
)
system_user.set_password('system123!') # Random password, won't be used
db.session.add(system_user)
db.session.commit()
print(" ✓ Created system user")
# Create default chat rooms
print("Creating default chat rooms...")
# General chat room
general_room = ChatRoom.query.filter_by(name="General Discussion").first()
if not general_room:
general_room = ChatRoom(
name="General Discussion",
description="General conversation about motorcycles and adventures",
is_private=False,
is_active=True,
created_by_id=system_user.id
)
db.session.add(general_room)
print(" ✓ Created General Discussion room")
# Technical support room
support_room = ChatRoom.query.filter_by(name="Technical Support").first()
if not support_room:
support_room = ChatRoom(
name="Technical Support",
description="Get help with technical issues and app support",
is_private=False,
is_active=True,
room_type="admin_support",
created_by_id=system_user.id
)
db.session.add(support_room)
print(" ✓ Created Technical Support room")
# Route planning room
routes_room = ChatRoom.query.filter_by(name="Route Planning").first()
if not routes_room:
routes_room = ChatRoom(
name="Route Planning",
description="Discuss routes, share GPX files, and plan adventures",
is_private=False,
is_active=True,
created_by_id=system_user.id
)
db.session.add(routes_room)
print(" ✓ Created Route Planning room")
# Gear & Equipment room
gear_room = ChatRoom.query.filter_by(name="Gear & Equipment").first()
if not gear_room:
gear_room = ChatRoom(
name="Gear & Equipment",
description="Discuss motorcycle gear, equipment reviews, and recommendations",
is_private=False,
is_active=True,
created_by_id=system_user.id
)
db.session.add(gear_room)
print(" ✓ Created Gear & Equipment room")
# Commit the changes
db.session.commit()
print("✓ Default chat rooms created successfully")
# Add welcome messages to rooms
print("Adding welcome messages...")
# Add welcome messages if they don't exist
rooms_with_messages = [
(general_room, "Welcome to the General Discussion! Share your motorcycle adventures and connect with fellow riders."),
(support_room, "Welcome to Technical Support! Our administrators are here to help with any issues or questions."),
(routes_room, "Welcome to Route Planning! Share your favorite routes and discover new adventures."),
(gear_room, "Welcome to Gear & Equipment! Discuss the best gear for your motorcycle adventures.")
]
for room, message_text in rooms_with_messages:
existing_message = ChatMessage.query.filter_by(
room_id=room.id,
user_id=system_user.id,
message_type='system'
).first()
if not existing_message:
welcome_message = ChatMessage(
room_id=room.id,
user_id=system_user.id,
content=message_text,
message_type='system'
)
db.session.add(welcome_message)
db.session.commit()
print("✓ Welcome messages added")
print(f"[{datetime.now()}] Chat system migration completed successfully!")
print("\nChat System Features:")
print(" • User-to-user messaging")
print(" • Admin support channels")
print(" • Post-specific discussions")
print(" • Mobile app compatibility")
print(" • Real-time messaging")
print(" • Profanity filtering")
print(" • Message moderation")
print("\nDefault Chat Rooms:")
print(" • General Discussion")
print(" • Technical Support")
print(" • Route Planning")
print(" • Gear & Equipment")
print("\nAPI Endpoints Available:")
print(" • /api/v1/chat/* (Mobile app integration)")
print(" • /chat/* (Web interface)")
except Exception as e:
print(f"[ERROR] Migration failed: {e}")
db.session.rollback()
raise e
if __name__ == '__main__':
run_migration()