SMTP Settings
This commit is contained in:
34
models.py
34
models.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user