34 lines
1.2 KiB
Python
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)
|