def format_file_size(size_bytes): """Format file size in bytes to human-readable format""" if size_bytes < 1024: return f"{size_bytes} bytes" elif size_bytes < 1024 * 1024: return f"{size_bytes / 1024:.2f} KB" elif size_bytes < 1024 * 1024 * 1024: return f"{size_bytes / (1024 * 1024):.2f} MB" else: return f"{size_bytes / (1024 * 1024 * 1024):.2f} GB" def get_file_icon(mime_type, filename): """Get Font Awesome icon class based on file type""" # Extract extension from filename extension = filename.split('.')[-1].lower() if '.' in filename else '' # Define icon mapping icon_map = { # Documents 'pdf': 'fa-file-pdf', 'doc': 'fa-file-word', 'docx': 'fa-file-word', 'txt': 'fa-file-alt', 'rtf': 'fa-file-alt', 'odt': 'fa-file-alt', # Spreadsheets 'xls': 'fa-file-excel', 'xlsx': 'fa-file-excel', 'csv': 'fa-file-csv', # Presentations 'ppt': 'fa-file-powerpoint', 'pptx': 'fa-file-powerpoint', # Images 'jpg': 'fa-file-image', 'jpeg': 'fa-file-image', 'png': 'fa-file-image', 'gif': 'fa-file-image', 'svg': 'fa-file-image', 'webp': 'fa-file-image', # Audio 'mp3': 'fa-file-audio', 'wav': 'fa-file-audio', 'ogg': 'fa-file-audio', # Video 'mp4': 'fa-file-video', 'avi': 'fa-file-video', 'mov': 'fa-file-video', 'wmv': 'fa-file-video', # Archives 'zip': 'fa-file-archive', 'rar': 'fa-file-archive', '7z': 'fa-file-archive', 'tar': 'fa-file-archive', 'gz': 'fa-file-archive', # Code 'html': 'fa-file-code', 'css': 'fa-file-code', 'js': 'fa-file-code', 'py': 'fa-file-code', 'java': 'fa-file-code', 'php': 'fa-file-code', 'c': 'fa-file-code', 'cpp': 'fa-file-code', 'h': 'fa-file-code', } # Check if we have an icon for this extension if extension in icon_map: return icon_map[extension] # If not, try to determine from mime type if mime_type: if mime_type.startswith('image/'): return 'fa-file-image' elif mime_type.startswith('audio/'): return 'fa-file-audio' elif mime_type.startswith('video/'): return 'fa-file-video' elif mime_type.startswith('text/'): return 'fa-file-alt' elif 'pdf' in mime_type: return 'fa-file-pdf' elif 'msword' in mime_type or 'document' in mime_type: return 'fa-file-word' elif 'excel' in mime_type or 'spreadsheet' in mime_type: return 'fa-file-excel' elif 'powerpoint' in mime_type or 'presentation' in mime_type: return 'fa-file-powerpoint' elif 'zip' in mime_type or 'compressed' in mime_type or 'archive' in mime_type: return 'fa-file-archive' # Default icon return 'fa-file'