from pathlib import Path from django.utils.html import format_html from core.models import Snapshot def get_icons(snapshot: Snapshot) -> str: link = snapshot.as_link() canon = link.canonical_outputs() out_dir = Path(link.link_dir) # slow version: highlights icons based on whether files exist or not for that output # link_tuple = lambda link, method: (link.archive_path, canon[method] or '', canon[method] and (out_dir / (canon[method] or 'notdone')).exists()) # fast version: all icons are highlighted without checking for outputs in filesystem link_tuple = lambda link, method: (link.archive_path, canon[method] or '', canon[method] and (out_dir / (canon[method] or 'notdone')).exists()) return format_html( '' '' '🆆 ' '🅷 ' '📄 ' '💻 ' '📦 ' '📼 ' '🅶 ' '🏛 ' '', *link_tuple(link, 'singlefile_path'), *link_tuple(link, 'wget_path')[:2], any((out_dir / link.domain).glob('*')), *link_tuple(link, 'dom_path'), *link_tuple(link, 'pdf_path'), *link_tuple(link, 'screenshot_path'), *link_tuple(link, 'warc_path')[:2], any((out_dir / canon['warc_path']).glob('*.warc.gz')), *link_tuple(link, 'media_path')[:2], any((out_dir / canon['media_path']).glob('*')), *link_tuple(link, 'git_path')[:2], any((out_dir / canon['git_path']).glob('*')), canon['archive_org_path'], (out_dir / 'archive.org.txt').exists(), )