SMTP Settings

This commit is contained in:
2025-06-02 14:30:20 +02:00
parent 694c8df364
commit 765c07316a
9 changed files with 461 additions and 2 deletions

View File

@@ -5,6 +5,7 @@ from datetime import datetime
from sqlalchemy.orm import relationship
from extensions import db
from enum import Enum
import json
# Association table for room members
room_members = db.Table('room_members',
@@ -158,7 +159,38 @@ class SiteSettings(db.Model):
settings = cls()
db.session.add(settings)
db.session.commit()
return settings
return settings
class KeyValueSettings(db.Model):
id = db.Column(db.Integer, primary_key=True)
key = db.Column(db.String(100), unique=True, nullable=False)
value = db.Column(db.Text)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
@classmethod
def get_value(cls, key, default=None):
setting = cls.query.filter_by(key=key).first()
if setting:
try:
return json.loads(setting.value)
except (json.JSONDecodeError, TypeError):
return setting.value
return default
@classmethod
def set_value(cls, key, value):
setting = cls.query.filter_by(key=key).first()
if not setting:
setting = cls(key=key)
if isinstance(value, (dict, list)):
setting.value = json.dumps(value)
else:
setting.value = str(value)
db.session.add(setting)
db.session.commit()
return setting
class Conversation(db.Model):
id = db.Column(db.Integer, primary_key=True)