Merge pull request #3436 from dato/push-ovrtyrmwkoxu

Push ovrtyrmwkoxu
This commit is contained in:
Mouse Reeve 2024-09-12 16:43:08 -07:00 committed by GitHub
commit 4158c0fafa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 20 additions and 14 deletions

View file

@ -1,4 +1,5 @@
""" template filters """
import datetime
from typing import Any, Optional
from dateutil.relativedelta import relativedelta
from django import template
@ -34,11 +35,13 @@ def get_replies(status: models.Status) -> Any:
@register.filter(name="parent")
def get_parent(status: models.Status) -> Any:
"""get the reply parent for a status"""
return (
models.Status.objects.filter(id=status.reply_parent_id)
.select_subclasses()
.first()
)
if status.reply_parent_id:
return (
models.Status.objects.filter(id=status.reply_parent_id)
.select_subclasses()
.first()
)
return None
@register.filter(name="boosted_status")
@ -53,7 +56,7 @@ def get_boosted(boost: models.Boost) -> Any:
@register.filter(name="published_date")
def get_published_date(date: str) -> Any:
def get_published_date(date: datetime.datetime) -> str | None:
"""less verbose combo of humanize filters"""
if not date:
return ""

View file

@ -93,7 +93,7 @@ def get_book_cover_thumbnail(
@register.filter(name="get_isni_bio")
def get_isni_bio(existing: int, author: Author) -> str:
def get_isni_bio(existing: list[str], author: Author) -> str:
"""Returns the isni bio string if an existing author has an isni listed"""
auth_isni = re.sub(r"\D", "", str(author.isni))
if len(existing) == 0:

View file

@ -1,17 +1,20 @@
""" Custom handler for caching """
from typing import Any, Callable, Tuple, Union
from typing import Callable, Optional, ParamSpec, TypeVar, cast
from django.core.cache import cache
Args = ParamSpec("Args")
Ret = TypeVar("Ret")
def get_or_set(
cache_key: str,
function: Callable[..., Any],
*args: Tuple[Any, ...],
timeout: Union[float, None] = None
) -> Any:
function: Callable[Args, Ret],
*args: Args.args,
timeout: Optional[float] = None
) -> Ret:
"""Django's built-in get_or_set isn't cutting it"""
value = cache.get(cache_key)
value = cast(Optional[Ret], cache.get(cache_key))
if value is None:
value = function(*args)
cache.set(cache_key, value, timeout=timeout)

View file

@ -25,4 +25,4 @@ ignore_errors = False
[mypy-bookwyrm.templatetags.*]
ignore_errors = False
allow_untyped_calls = True
disable_error_code = attr-defined, arg-type, misc
disable_error_code = attr-defined