From c45e9f60166118663349b87d66e55bcc35cf58dd Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 20 Aug 2023 18:27:20 +0000 Subject: [PATCH] sync site config during boot; customize site logo --- boofilsic/settings.py | 15 +++++++--- common/management/commands/setup.py | 39 +++++++++++++++++++++++++ common/templates/_header.html | 2 +- common/templates/common_libs.html | 4 +-- docker-compose.yml | 2 ++ neodb.env.example | 8 ++++- requirements.txt | 1 + users/models/apidentity.py | 4 ++- users/templates/users/login.html | 2 +- users/templates/users/register.html | 2 +- users/templates/users/verify_email.html | 2 +- 11 files changed, 69 insertions(+), 12 deletions(-) diff --git a/boofilsic/settings.py b/boofilsic/settings.py index d03d11a8..6b579557 100644 --- a/boofilsic/settings.py +++ b/boofilsic/settings.py @@ -1,14 +1,15 @@ import os -# import django_stubs_ext +import environ -# django_stubs_ext.monkeypatch() +env = environ.Env( + # set casting, default value + DEBUG=(bool, False) +) NEODB_VERSION = "0.8" DATABASE_ROUTERS = ["takahe.db_routes.TakaheRouter"] -PROJECT_ROOT = os.path.abspath(os.path.dirname(__name__)) - # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -406,3 +407,9 @@ OAUTH2_PROVIDER = { OAUTH2_PROVIDER_APPLICATION_MODEL = "developer.Application" DEVELOPER_CONSOLE_APPLICATION_CLIENT_ID = "NEODB_DEVELOPER_CONSOLE" + +SETUP_ADMIN_USERNAMES = [ + u for u in os.environ.get("NEODB_ADMIN_USERNAMES", "").split(",") if u +] + +SITE_INFO["site_logo"] = os.environ.get("NEODB_SITE_LOGO", "/s/img/logo.svg") diff --git a/common/management/commands/setup.py b/common/management/commands/setup.py index d25b1ecf..7cf88b0e 100644 --- a/common/management/commands/setup.py +++ b/common/management/commands/setup.py @@ -1,15 +1,54 @@ +from django.conf import settings from django.core.management.base import BaseCommand +from loguru import logger from catalog.search.typesense import Indexer +from takahe.models import Config as TakaheConfig +from takahe.models import Domain as TakaheDomain +from takahe.models import Identity as TakaheIdentity +from takahe.models import User as TakaheUser +from users.models import User class Command(BaseCommand): help = "Post-Migration Setup" + def sync_site_config(self): + domain = settings.SITE_INFO["site_domain"] + name = settings.SITE_INFO["site_name"] + service_domain = settings.SITE_INFO.get("site_service_domain") + TakaheConfig.objects.update_or_create( + key="site_name", + user=None, + identity=None, + domain=None, + defaults={"json": name}, + ) + TakaheConfig.objects.update_or_create( + key="site_name", + user=None, + identity=None, + domain_id=domain, + defaults={"json": name}, + ) + + def sync_admin_user(self): + users = User.objects.filter(username__in=settings.SETUP_ADMIN_USERNAMES) + for user in users: + if user.is_superuser: + logger.debug(f"User {user.username} is already admin") + else: + user.is_superuser = True + user.save(update_fields=["is_superuser"]) + TakaheUser.objects.filter(email="@" + user.username).update(admin=True) + logger.info(f"Updated user {user.username} as admin") + def handle(self, *args, **options): # Update site name if changed + self.sync_site_config() # Create/update admin user if configured in env + self.sync_admin_user() # Create basic emoji if not exists diff --git a/common/templates/_header.html b/common/templates/_header.html index 62b7c5c6..58418f76 100644 --- a/common/templates/_header.html +++ b/common/templates/_header.html @@ -6,7 +6,7 @@