From aaffc8f3cd966003c3b218caaa961e6905cba79f Mon Sep 17 00:00:00 2001 From: Henri Dickson <90480431+alphatownsman@users.noreply.github.com> Date: Sat, 23 Dec 2023 00:57:00 -0500 Subject: [PATCH] fix profile uri (#443) --- takahe/utils.py | 2 +- users/management/commands/fix_profile.py | 30 ++++++++++++++++++++++++ users/models/user.py | 4 ++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 users/management/commands/fix_profile.py diff --git a/takahe/utils.py b/takahe/utils.py index d947af83..e3c8912f 100644 --- a/takahe/utils.py +++ b/takahe/utils.py @@ -106,7 +106,7 @@ class Takahe: logger.info(f"Creating takahe identity {u}@{domain}") identity = Identity.objects.create( actor_uri=f"https://{domain.uri_domain}/@{u.username}@{domain.domain}/", - profile_uri=u.url, + profile_uri=u.absolute_url, username=u.username, domain=domain, name=u.username, diff --git a/users/management/commands/fix_profile.py b/users/management/commands/fix_profile.py new file mode 100644 index 00000000..234f55e4 --- /dev/null +++ b/users/management/commands/fix_profile.py @@ -0,0 +1,30 @@ +from django.conf import settings +from django.core.management.base import BaseCommand +from loguru import logger +from tqdm import tqdm + +from takahe.utils import Takahe +from users.models import Preference, User + + +class Command(BaseCommand): + help = "Manage import tasks" + + def add_arguments(self, parser): + parser.add_argument( + "--reset", + action="store_true", + ) + + def handle(self, *args, **options): + count = 0 + for user in tqdm(User.objects.all()): + if ( + user.identity + and not user.identity.takahe_identity.profile_uri.startswith("http") + ): + user.identity.takahe_identity.profile_uri = user.absolute_url + user.identity.takahe_identity.save(update_fields=["profile_uri"]) + Takahe.update_state(user.identity.takahe_identity, "edited") + count += 1 + self.stdout.write(self.style.SUCCESS(f"{count} user(s) fixed")) diff --git a/users/models/user.py b/users/models/user.py index 6fbbb129..12a0be9c 100644 --- a/users/models/user.py +++ b/users/models/user.py @@ -202,6 +202,10 @@ class User(AbstractUser): def url(self): return reverse("journal:user_profile", args=[self.handler]) + @property + def absolute_url(self): + return settings.SITE_INFO["site_url"] + self.url + def __str__(self): return f'{self.pk}:{self.username or ""}:{self.mastodon_acct}'