34 lines
787 B
Python
34 lines
787 B
Python
from typing import Any
|
|
from unicodedata import normalize
|
|
|
|
from pydantic.dataclasses import dataclass
|
|
|
|
from mdrsclient.models.utils import iso8601_to_user_friendly
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class File:
|
|
id: str
|
|
name: str
|
|
type: str
|
|
size: int
|
|
thumbnail: str | None
|
|
description: str
|
|
metadata: dict[str, Any]
|
|
download_url: str
|
|
created_at: str
|
|
updated_at: str
|
|
|
|
@property
|
|
def created_at_name(self) -> str:
|
|
return iso8601_to_user_friendly(self.created_at)
|
|
|
|
@property
|
|
def updated_at_name(self) -> str:
|
|
return iso8601_to_user_friendly(self.updated_at)
|
|
|
|
|
|
def find_file(files: list[File], name: str) -> File | None:
|
|
_name = normalize("NFC", name).lower()
|
|
return next((x for x in files if x.name.lower() == _name), None)
|