summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Godwin2022-12-12 07:32:35 -0700
committerAndrew Godwin2022-12-12 11:56:49 -0700
commit5bc9ff39ac4f4a4b0d43066bce9cfde0397f3388 (patch)
tree4d4403c9f9c4d41c4db5d28e5a629056051aad0c
parent8ffe4bc1453660c1f211496074ebcc68c924327e (diff)
downloadtakahe-5bc9ff39ac4f4a4b0d43066bce9cfde0397f3388.tar.gz
takahe-5bc9ff39ac4f4a4b0d43066bce9cfde0397f3388.tar.bz2
takahe-5bc9ff39ac4f4a4b0d43066bce9cfde0397f3388.zip
Fix static file URLs
-rw-r--r--api/schemas.py4
-rw-r--r--core/uris.py16
-rw-r--r--users/models/identity.py5
3 files changed, 20 insertions, 5 deletions
diff --git a/api/schemas.py b/api/schemas.py
index 97b8169..59f9a12 100644
--- a/api/schemas.py
+++ b/api/schemas.py
@@ -35,8 +35,8 @@ class Account(Schema):
note: str
avatar: str
avatar_static: str
- header: str
- header_static: str
+ header: str | None = Field(...)
+ header_static: str | None = Field(...)
locked: bool
fields: list[AccountField]
emojis: list[CustomEmoji]
diff --git a/core/uris.py b/core/uris.py
index 9ed2a32..2800fd4 100644
--- a/core/uris.py
+++ b/core/uris.py
@@ -1,6 +1,7 @@
from urllib.parse import urljoin
from django.conf import settings
+from django.templatetags.static import static
class RelativeAbsoluteUrl:
@@ -32,3 +33,18 @@ class AutoAbsoluteUrl(RelativeAbsoluteUrl):
else:
absolute_prefix = f"https://{settings.MAIN_DOMAIN}/"
self.absolute = urljoin(absolute_prefix, self.relative)
+
+
+class StaticAbsoluteUrl(RelativeAbsoluteUrl):
+ """
+ Creates static URLs given only the static-relative path
+ """
+
+ def __init__(self, path: str):
+ static_url = static(path)
+ if "://" in static_url:
+ super().__init__(static_url)
+ else:
+ super().__init__(
+ urljoin(f"https://{settings.MAIN_DOMAIN}/", static_url), static_url
+ )
diff --git a/users/models/identity.py b/users/models/identity.py
index 1ece0fd..1239ca1 100644
--- a/users/models/identity.py
+++ b/users/models/identity.py
@@ -7,7 +7,6 @@ import urlman
from asgiref.sync import async_to_sync, sync_to_async
from django.db import IntegrityError, models
from django.template.defaultfilters import linebreaks_filter
-from django.templatetags.static import static
from django.utils import timezone
from django.utils.functional import lazy
@@ -17,7 +16,7 @@ from core.ld import canonicalise, format_ld_date, get_list, media_type_from_file
from core.models import Config
from core.signatures import HttpSignature, RsaKeys
from core.uploads import upload_namer
-from core.uris import AutoAbsoluteUrl, RelativeAbsoluteUrl
+from core.uris import AutoAbsoluteUrl, RelativeAbsoluteUrl, StaticAbsoluteUrl
from stator.models import State, StateField, StateGraph, StatorModel
from users.models.domain import Domain
from users.models.system_actor import SystemActor
@@ -156,7 +155,7 @@ class Identity(StatorModel):
elif self.icon_uri:
return AutoAbsoluteUrl(f"/proxy/identity_icon/{self.pk}/")
else:
- return RelativeAbsoluteUrl(static("img/unknown-icon-128.png"))
+ return StaticAbsoluteUrl("img/unknown-icon-128.png")
def local_image_url(self) -> RelativeAbsoluteUrl | None:
"""