From 19f716ab4cc73592d19128d239848002678af736 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sat, 29 Jun 2019 22:26:28 +0100 Subject: Implemnt _options_factory for OptionsSetting to have dynamic options --- modules/shorturl.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'modules') diff --git a/modules/shorturl.py b/modules/shorturl.py index 4959b53a..e4890ecf 100644 --- a/modules/shorturl.py +++ b/modules/shorturl.py @@ -6,10 +6,6 @@ from src import ModuleManager, utils URL_BITLYSHORTEN = "https://api-ssl.bitly.com/v3/shorten" -@utils.export("serverset", utils.Setting("url-shortener", - "Set URL shortener service", example="bitly")) -@utils.export("botset", utils.Setting("url-shortener", - "Set URL shortener service", example="bitly")) class Module(ModuleManager.BaseModule): def on_load(self): self.exports.add("shorturl", self._shorturl) @@ -17,6 +13,16 @@ class Module(ModuleManager.BaseModule): self.exports.add("shorturl-s-bitly", self._bitly) + setting = utils.OptionsSetting("url-shortener", + "Set URL shortener service", + options_factory=self._shorturl_options_factory) + self.exports.add("serverset", setting) + self.exports.add("botset", setting) + + def _shorturl_options_factory(self): + shorteners = self.exports.find("shorturl-s-") + return [s.replace("shorturl-s-", "", 1) for s in shorteners] + def _get_shortener(self, name): return self.exports.get_one("shorturl-s-%s" % name, None) def _call_shortener(self, shortener_name, url): -- cgit v1.3.1-10-gc9f91