Files
retoors/retoors/views/viewer.py
T

44 lines
1.4 KiB
Python

from aiohttp import web
import aiohttp_jinja2
from pathlib import Path
from ..helpers.auth import login_required
class ViewerView(web.View):
@login_required
async def get(self):
file_path = self.request.query.get('path', '')
user = self.request.get('user')
if not file_path:
return web.Response(text="No file path specified", status=400)
# Get file extension to determine media type
file_ext = Path(file_path).suffix.lower()
# Determine media type
image_extensions = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg'}
video_extensions = {'.mp4', '.avi', '.mov', '.wmv', '.flv', '.webm', '.mkv'}
audio_extensions = {'.mp3', '.wav', '.flac', '.aac', '.ogg', '.m4a'}
if file_ext in image_extensions:
media_type = 'image'
elif file_ext in video_extensions:
media_type = 'video'
elif file_ext in audio_extensions:
media_type = 'audio'
else:
return web.Response(text="Unsupported file type for viewing", status=400)
return aiohttp_jinja2.render_template(
'pages/media_viewer.html',
self.request,
{
'request': self.request,
'user': user,
'file_path': file_path,
'media_type': media_type,
'active_page': 'files'
}
)