added usage limit visuals and DB
This commit is contained in:
40
models.py
40
models.py
@@ -165,6 +165,46 @@ class SiteSettings(db.Model):
|
||||
db.session.commit()
|
||||
return settings
|
||||
|
||||
class DocuPulseSettings(db.Model):
|
||||
__tablename__ = 'docupulse_settings'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
max_rooms = db.Column(db.Integer, default=10)
|
||||
max_conversations = db.Column(db.Integer, default=10)
|
||||
max_storage = db.Column(db.Integer, default=10737418240) # 10GB in bytes
|
||||
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
@classmethod
|
||||
def get_settings(cls):
|
||||
settings = cls.query.first()
|
||||
if not settings:
|
||||
settings = cls(
|
||||
max_rooms=10,
|
||||
max_conversations=10,
|
||||
max_storage=10737418240 # 10GB in bytes
|
||||
)
|
||||
db.session.add(settings)
|
||||
db.session.commit()
|
||||
return settings
|
||||
|
||||
@classmethod
|
||||
def get_usage_stats(cls):
|
||||
settings = cls.get_settings()
|
||||
total_rooms = Room.query.count()
|
||||
total_conversations = Conversation.query.count()
|
||||
total_storage = db.session.query(db.func.sum(RoomFile.size)).filter(RoomFile.deleted == False).scalar() or 0
|
||||
|
||||
return {
|
||||
'max_rooms': settings.max_rooms,
|
||||
'max_conversations': settings.max_conversations,
|
||||
'max_storage': settings.max_storage,
|
||||
'current_rooms': total_rooms,
|
||||
'current_conversations': total_conversations,
|
||||
'current_storage': total_storage,
|
||||
'rooms_percentage': (total_rooms / settings.max_rooms) * 100 if settings.max_rooms > 0 else 0,
|
||||
'conversations_percentage': (total_conversations / settings.max_conversations) * 100 if settings.max_conversations > 0 else 0,
|
||||
'storage_percentage': (total_storage / settings.max_storage) * 100 if settings.max_storage > 0 else 0
|
||||
}
|
||||
|
||||
class KeyValueSettings(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
key = db.Column(db.String(100), unique=True, nullable=False)
|
||||
|
||||
Reference in New Issue
Block a user