from __future__ import annotations
from typing import TYPE_CHECKING
from django.forms.utils import flatatt
from django.utils.html import format_html, format_html_join
from django.utils.translation import gettext_lazy as _
try:
from wagtail.admin.paginator import WagtailPaginator as Paginator
except ImportError:
from django.core.paginator import Paginator
if TYPE_CHECKING:
from django.core.paginator import Page as PaginatorPage
from django.http import HttpRequest
from .models import AbstractMedia
DEFAULT_PAGE_KEY: str = "p"
def paginate(
request: HttpRequest, items, page_key: str = DEFAULT_PAGE_KEY, per_page: int = 20
) -> tuple[Paginator, PaginatorPage]:
paginator = Paginator(items, per_page)
page = paginator.get_page(request.GET.get(page_key))
return paginator, page
def format_audio_html(item: AbstractMedia) -> str:
return format_html(
"",
sources=format_html_join(
"\n", "", [[flatatt(s)] for s in item.sources]
),
fallback=_("Your browser does not support the audio element."),
)
def format_video_html(item: AbstractMedia) -> str:
return format_html(
"",
sources=format_html_join(
"\n", "", [[flatatt(s)] for s in item.sources]
),
fallback=_("Your browser does not support the video element."),
)