add account preferences model and API endpoints for user settings

This commit is contained in:
j3d1 2026-08-01 02:29:57 +02:00
parent a9d5bbb9df
commit 32addb8ed1
11 changed files with 297 additions and 21 deletions

View file

@ -113,6 +113,23 @@ class ToolshedUser(AbstractUser):
return self.public_identity.public_key
class AccountPreference(models.Model):
"""A single account-level (server-synced, cross-device) user preference, stored as a key/value pair.
Device-level preferences are intentionally *not* stored here - they stay in the browser's
local storage since they describe the device, not the account.
"""
user = models.ForeignKey(ToolshedUser, on_delete=models.CASCADE, related_name='preferences')
key = models.CharField(max_length=255)
value = models.JSONField()
class Meta:
unique_together = ('user', 'key')
def __str__(self):
return f"{self.user}: {self.key}"
class FriendRequestOutgoing(models.Model):
secret = models.CharField(max_length=255)
befriender_user = models.ForeignKey(ToolshedUser, on_delete=models.CASCADE, related_name='friend_requests_outgoing')