sync site config during boot; customize site logo
This commit is contained in:
parent
4702b4feb3
commit
c45e9f6016
11 changed files with 69 additions and 12 deletions
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<nav>
|
||||
<ul class="nav-logo">
|
||||
<a href="{% url 'common:home' %}">
|
||||
<img src="{% static 'img/logo.svg' %}" alt="" />
|
||||
<img src="{{ site_logo }}" alt="" />
|
||||
</a>
|
||||
</ul>
|
||||
<ul class="nav-search {% if request.GET.q %}unhide{% endif %}">
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
}
|
||||
})();
|
||||
</script>
|
||||
<link rel="icon" href="{% static 'img/logo-icon.png' %}">
|
||||
<link rel="apple-touch-icon" href="{% static 'img/logo-icon.png' %}">
|
||||
<link rel="icon" href="{{ site_logo }}">
|
||||
<link rel="apple-touch-icon" href="{{ site_logo }}">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-title" content="{{ site_name }}">
|
||||
|
|
|
@ -17,8 +17,10 @@ x-shared:
|
|||
environment:
|
||||
- NEODB_SITE_NAME
|
||||
- NEODB_SITE_DOMAIN
|
||||
- NEODB_SITE_LOGO
|
||||
- NEODB_DEBUG
|
||||
- NEODB_SECRET_KEY
|
||||
- NEODB_ADMIN_USERNAMES
|
||||
- NEODB_DB_NAME=neodb
|
||||
- NEODB_DB_USER=neodb
|
||||
- NEODB_DB_PASSWORD=aubergine
|
||||
|
|
|
@ -4,15 +4,21 @@
|
|||
|
||||
# Change these before start the instance for the first time
|
||||
NEODB_SECRET_KEY=change_me
|
||||
NEODB_SITE_NAME=Example Site
|
||||
NEODB_SITE_DOMAIN=example.site
|
||||
|
||||
# Change these
|
||||
NEODB_SITE_NAME=Example Site
|
||||
NEODB_SITE_LOGO=/logo.svg
|
||||
|
||||
# HTTP port your reverse proxy should set request to
|
||||
# NEODB_PORT=8000
|
||||
|
||||
# Path to store db/media/cache/etc, must be writable
|
||||
# NEODB_DATA=/var/lib/neodb
|
||||
|
||||
# Users with these names will be promoted to admin during next boot/migration
|
||||
# NEODB_ADMIN_USERNAMES = eggplant,aubergine
|
||||
|
||||
# Scaling parameters
|
||||
# NEODB_WEB_WORKER_NUM=32
|
||||
# TAKAHE_WEB_WORKER_NUM=32
|
||||
|
|
|
@ -6,6 +6,7 @@ django-anymail
|
|||
django-auditlog @ git+https://github.com/jazzband/django-auditlog.git@45591463e8192b4ac0095e259cc4dcea0ac2fd6c
|
||||
django-bleach
|
||||
django-compressor
|
||||
django-environ
|
||||
django-hijack
|
||||
django-jsonform
|
||||
django-maintenance-mode
|
||||
|
|
|
@ -40,7 +40,9 @@ class APIdentity(models.Model):
|
|||
|
||||
@property
|
||||
def is_active(self):
|
||||
return self.user.is_active and self.takahe_identity.deleted is None
|
||||
return (
|
||||
self.user and self.user.is_active and self.takahe_identity.deleted is None
|
||||
)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
<body>
|
||||
<article>
|
||||
<header style="text-align: center;">
|
||||
<img src="{% static 'img/logo.svg' %}" class="logo" alt="logo">
|
||||
<img src="{{ site_logo }}" class="logo" alt="logo">
|
||||
</header>
|
||||
<div>
|
||||
{% if request.user.is_authenticated %}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<div class="container">
|
||||
<article>
|
||||
<header style="text-align: center;">
|
||||
<img src="{% static 'img/logo.svg' %}" class="logo" alt="logo">
|
||||
<img src="{{ site_logo }}" class="logo" alt="logo">
|
||||
</header>
|
||||
{% if request.session.new_user %}
|
||||
<h4>欢迎来到{{ site_name }},{{ request.user.mastodon_acct }}!</h4>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<div class="container">
|
||||
<article>
|
||||
<header style="text-align: center;">
|
||||
<img src="{% static 'img/logo.svg' %}" class="logo" alt="logo">
|
||||
<img src="{{ site_logo }}" class="logo" alt="logo">
|
||||
</header>
|
||||
<h4>验证电子邮件</h4>
|
||||
{% if success %}
|
||||
|
|
Loading…
Add table
Reference in a new issue