31 lines
862 B
Python
31 lines
862 B
Python
# retoor <retoor@molodetz.nl>
|
|||
|
|
from molodetz import config
|
||
|
|
from molodetz.services.base import BaseService
|
||
|
|
from molodetz.utils.presence import compute_roster
|
||
|
|
|
||
|
|
|
||
|
|
class PresenceService(BaseService):
|
||
|
|
name = "presence"
|
||
|
|
title = "Presence"
|
||
|
|
description = "Publiceert de online-set uit de laatste activiteit van accounts."
|
||
|
|
default_interval = 5
|
||
|
|
min_interval = 2
|
||
|
|
metrics_interval = 5
|
||
|
|
|
||
|
|
def __init__(self):
|
||
|
|
super().__init__()
|
||
|
|
self.roster = []
|
||
|
|
|
||
|
|
async def run_once(self):
|
||
|
|
self.roster = compute_roster()
|
||
|
|
|
||
|
|
def collect_metrics(self):
|
||
|
|
return {
|
||
|
|
"roster": self.roster,
|
||
|
|
"cards": [
|
||
|
|
{"label": "Online", "value": len(self.roster[: config.PRESENCE_ONLINE_LIMIT])},
|
||
|
|
{"label": "Gevolgd", "value": len(self.roster)},
|
||
|
|
],
|
||
|
|
"table": None,
|
||
|
|
}
|