tinyweb-forum/tinyweb_forum/__init__.py

34 lines
1.2 KiB
Python

from tinyweb_forum.db import ForumDB
from tinyweb_forum.handlers import ForumHandlers
from tinyweb_forum.sync import ForumSync
FORUM_ENABLED_KEY = "forum_enabled"
class ForumPlugin:
def __init__(self, data_dir, identity, reticulum, site_name="me"):
self.fdb = ForumDB(data_dir)
self.handlers = ForumHandlers(
self.fdb, None, identity, reticulum, site_name=site_name
)
self.sync = ForumSync(self.fdb, identity, reticulum, lambda: self.handlers)
self.handlers.sync = self.sync
self.identity = identity
self.reticulum = reticulum
self._started = False
def is_enabled(self):
return self.fdb.get_setting(FORUM_ENABLED_KEY, "0") == "1"
def enable(self):
self.fdb.set_setting(FORUM_ENABLED_KEY, "1")
if not self._started:
self.sync.start()
self._started = True
def disable(self):
self.fdb.set_setting(FORUM_ENABLED_KEY, "0")
# Keep sync running so we still receive content — disable just hides UI
def handle(self, method, path, query, body, cookies=None):
return self.handlers.handle(method, path, query, body, cookies)