diff --git a/takahe/models.py b/takahe/models.py index c5797595..5a902907 100644 --- a/takahe/models.py +++ b/takahe/models.py @@ -1532,3 +1532,50 @@ class InboxMessage(models.Model): "object": payload, } ) + + +class Config(models.Model): + """ + A configuration setting for either the server or a specific user or identity. + + The possible options and their defaults are defined at the bottom of the file. + """ + + key = models.CharField(max_length=500) + + user = models.ForeignKey( + User, + blank=True, + null=True, + related_name="configs", + on_delete=models.CASCADE, + ) + + identity = models.ForeignKey( + Identity, + blank=True, + null=True, + related_name="configs", + on_delete=models.CASCADE, + ) + + domain = models.ForeignKey( + Domain, + blank=True, + null=True, + related_name="configs", + on_delete=models.CASCADE, + ) + + json = models.JSONField(blank=True, null=True) + image = models.ImageField( + blank=True, + null=True, + ) + + class Meta: + # managed = False + db_table = "core_config" + unique_together = [ + ("key", "user", "identity", "domain"), + ] diff --git a/users/migrations/0013_init_identity.py b/users/migrations/0013_init_identity.py index 9729032d..ba88a9fc 100644 --- a/users/migrations/0013_init_identity.py +++ b/users/migrations/0013_init_identity.py @@ -5,11 +5,13 @@ from django.db import migrations, models, transaction from loguru import logger from tqdm import tqdm +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 domain = settings.SITE_INFO["site_domain"] +name = settings.SITE_INFO["site_name"] service_domain = settings.SITE_INFO.get("site_service_domain") @@ -27,6 +29,28 @@ def init_domain(apps, schema_editor): else: logger.info(f"Takahe domain {domain} already exists") + TakaheConfig.objects.update_or_create( + key="public_timeline", + user=None, + identity=None, + domain=None, + defaults={"json": False}, + ) + 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=domain, + defaults={"json": name}, + ) + def init_identity(apps, schema_editor): User = apps.get_model("users", "User") diff --git a/users/templates/users/profile_actions.html b/users/templates/users/profile_actions.html index 3f7cc7eb..7848d68f 100644 --- a/users/templates/users/profile_actions.html +++ b/users/templates/users/profile_actions.html @@ -28,7 +28,7 @@ + title="用户原始主页">