From e17f17385aadaae193045f9ca4756ac35033c38d Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Thu, 9 Nov 2023 11:58:40 -0700 Subject: [PATCH] Add setting to keep migration off by default for now --- core/context.py | 3 +++ docs/releases/0.10.rst | 5 +++++ takahe/settings.py | 3 +++ templates/settings/_menu.html | 10 ++++++---- users/views/settings/migration.py | 4 ++++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/core/context.py b/core/context.py index 14e02bb..0a7daf1 100644 --- a/core/context.py +++ b/core/context.py @@ -1,9 +1,12 @@ +from django.conf import settings + from core.models import Config def config_context(request): return { "config": Config.system, + "allow_migration": settings.SETUP.ALLOW_USER_MIGRATION, "top_section": request.path.strip("/").split("/")[0], "opengraph_defaults": { "og:site_name": Config.system.site_name, diff --git a/docs/releases/0.10.rst b/docs/releases/0.10.rst index 646dce3..4dff3cb 100644 --- a/docs/releases/0.10.rst +++ b/docs/releases/0.10.rst @@ -27,6 +27,11 @@ Minor changes also include: * Profile pages are no longer shown for remote identities; instead, users are linked or redirected directly to the remote profile page. +* Inbound migration has been implemented, but is disabled by default as outbound + migration is not yet complete, and we don't want to release a system that + captures users with no outward path. If you *really* want to enable it, set + ``TAKAHE_ALLOW_USER_MIGRATION=true`` in your environment. + If you'd like to help with code, design, or other areas, see :doc:`/contributing` to see how to get in touch. diff --git a/takahe/settings.py b/takahe/settings.py index c0c45c3..f9a422d 100644 --- a/takahe/settings.py +++ b/takahe/settings.py @@ -151,6 +151,9 @@ class Settings(BaseSettings): STATOR_CONCURRENCY: int = 50 STATOR_CONCURRENCY_PER_MODEL: int = 15 + # If user migration is allowed (off by default until outbound is done) + ALLOW_USER_MIGRATION: bool = False + # Web Push keys # Generate via https://web-push-codelab.glitch.me/ VAPID_PUBLIC_KEY: str | None = None diff --git a/templates/settings/_menu.html b/templates/settings/_menu.html index 7e4635e..941133a 100644 --- a/templates/settings/_menu.html +++ b/templates/settings/_menu.html @@ -14,10 +14,12 @@ Import/Export - - - Migrate Inbound - + {% if allow_migration %} + + + Migrate Inbound + + {% endif %} Authorized Apps diff --git a/users/views/settings/migration.py b/users/views/settings/migration.py index 59976c1..a9ad122 100644 --- a/users/views/settings/migration.py +++ b/users/views/settings/migration.py @@ -1,6 +1,8 @@ from django import forms +from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required +from django.http import Http404 from django.shortcuts import redirect from django.utils.decorators import method_decorator from django.views.generic import FormView @@ -38,6 +40,8 @@ class MigrateInPage(IdentityViewMixin, FormView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) + if not settings.SETUP.ALLOW_USER_MIGRATION: + raise Http404() # If they asked for an alias deletion, do it here if "remove_alias" in self.request.GET: self.identity.remove_alias(self.request.GET["remove_alias"])