Esempio n. 1
0
    def _configure(self, config):
        self._daysUntilBoot = int(config.setdefault('boot_after_days', 180))
        safeRanks = stringToList(
            config.setdefault('safe_ranks', "rank1, rank2"))
        safeTitles = stringToList(
            config.setdefault('safe_titles', "DO NOT DELETE, "
                              "DO NOT ERASE"))
        self._safeRanks = map(_rankTransform, safeRanks)
        self._safeTitles = map(_rankTransform, safeTitles)
        self._bootMessage = toTypeOrNone(
            config.setdefault('boot_message', "none"))
        self._simulate = stringToBool(config.setdefault('simulate', "false"))
        self._immediate = stringToBool(
            config.setdefault('run_immediately', "false"))
        try:
            self._bootFrequencyDays = int(
                config.setdefault('boot_every_n_days', 1))
        except ValueError:
            raise FatalError("ClanRankModule: boot_every_n_days must "
                             "be integral")

        rules = config.setdefault(
            'rules', {
                'Normal Member': {
                    'demotion_allowed': "false",
                    'min_karma': 0,
                    'min_days_until_next_promotion': 7,
                    'min_days_in_clan': 0,
                    'next_rank': 'Rank2'
                },
                'Rank2': {
                    'demotion_allowed': "true",
                    'min_karma': 0,
                    'min_days_until_next_promotion': 0,
                    'min_days_in_clan': 0,
                    'next_rank': "none"
                }
            })

        for rule in rules.values():
            rule.setdefault('demotion_allowed', True)
            rule.setdefault('min_karma', 0)
            rule.setdefault('min_days_until_next_promotion', 0)
            rule.setdefault('min_days_in_clan', 0)
            rule.setdefault('next_rank', "none")

        self._ruleConfig = rules
Esempio n. 2
0
 def _configure(self, config):
     """ Configuration also requests a channel name """
     super(MessageManager, self)._configure(config)
     # set to channel in config
     self._channelName = config.setdefault('channel',
                                           self.chatManager.currentChannel)
     self._showChatHelpMessage = stringToBool(
         config.setdefault('show_chat_help_message', "True"))
Esempio n. 3
0
 def _configure(self, config):
     """Configuration. In addition to the BaseManager config, the
     accept_private_messages option is added for the BaseChatManager. """
     super(BaseChatManager, self)._configure(config)
     try:
         self._respondToWhisper = stringToBool(
                 config.setdefault('accept_private_messages', 'true'))
     except KeyError:
         raise Exception("Invalid option to accept_private_messages "
                         "for manager {}".format(self.identity))
Esempio n. 4
0
 def _configure(self, config):
     try:
         self._checkFrequency = int(
                 config.setdefault('fax_check_interval', 15))
         self._abortTime = int(config.setdefault('faxbot_timeout', 90))
         self.timeout = int(config.setdefault('url_timeout', 15))
         self.faxbot_uid = int(
                 config.setdefault('faxbot_id_number',"2194132))
         self.fax_lisw_url = config.setdefault('fax_list_url', 
                                               "http://goo.gl/Q352Q")
         self._announce = stringToBool(config.setdefault('announce', 
                                                         'false'))
         self._lite = stringToBool(config.setdefault('allow_requests',
                                                     'true'))
     except ValueError:
         raise Exception("Fax Module config error: "
                         "fax_check_interval, faxbot_timeout, "
                         "url_timeout, faxbot_id_number must be integral")
     self._alias = config.setdefault('alias', {'lobsterfrogman': 'lfm'})
Esempio n. 5
0
 def _configure(self, config):
     try:
         self._checkFrequency = int(
                 config.setdefault('fax_check_interval', 15))
         self._abortTime = int(config.setdefault('faxbot_timeout', 90))
         self.timeout = int(config.setdefault('url_timeout', 15))
         self.faxbot_uid = int(
                 config.setdefault('faxbot_id_number', 2194132))
         self.fax_list_url = config.setdefault('fax_list_url', 
                                               "http://goo.gl/Q352Q")
         self._announce = stringToBool(config.setdefault('announce', 
                                                         'false'))
         self._lite = stringToBool(config.setdefault('allow_requests',
                                                     'true'))
     except ValueError:
         raise Exception("Fax Module config error: "
                         "fax_check_interval, faxbot_timeout, "
                         "url_timeout, faxbot_id_number must be integral")
     self._alias = config.setdefault('alias', {'lobsterfrogman': 'lfm'})
Esempio n. 6
0
 def __init__(self, parent, args):
     super(_LuciferHealer, self).__init__(parent, args)
     self.extHealer = toTypeOrNone(
                         args.setdefault('external_healer', 'none'), str)
     try:
         self.maxFull = toTypeOrNone(args.setdefault('max_full', 'none'), 
                                     int)
     except ValueError:
         raise FatalError("Invalid max_full value for Lucifer: {}"
                          .format(args['max_full']))
     self.buyFromMall = stringToBool(args.setdefault('use_mall', 'true'))
Esempio n. 7
0
 def __init__(self, parent, args):
     super(_LuciferHealer, self).__init__(parent, args)
     self.extHealer = toTypeOrNone(
         args.setdefault('external_healer', 'none'), str)
     try:
         self.maxFull = toTypeOrNone(args.setdefault('max_full', 'none'),
                                     int)
     except ValueError:
         raise FatalError("Invalid max_full value for Lucifer: {}".format(
             args['max_full']))
     self.buyFromMall = stringToBool(args.setdefault('use_mall', 'true'))
Esempio n. 8
0
 def _configure(self, config):
     try:
         self.numWarnings = int(config.setdefault('num_warnings', 4))
         self.checkDelay = int(config.setdefault('monitor_interval', 55))
     except ValueError:
         raise Exception("Error in module config: (HoboChatMonitorModule) "
                         "num_warnings, monitor_interval must be integral")
     try:
         self._sendEmpty = stringToBool(
             config.setdefault('send_empty', 'false'))
     except ValueError:
         raise Exception("Error in module config: (HoboChatMonitorModule) "
                         "send_empty must be boolean")
Esempio n. 9
0
 def _configure(self, config):
     try:
         self.numWarnings = int(config.setdefault('num_warnings', 4))
         self.checkDelay = int(config.setdefault('monitor_interval', 55))
     except ValueError:
         raise Exception(
                 "Error in module config: (HoboChatMonitorModule) "
                 "num_warnings, monitor_interval must be integral")
     try:
         self._sendEmpty = stringToBool(
                 config.setdefault('send_empty', 'false'))
     except ValueError:
         raise Exception(
                 "Error in module config: (HoboChatMonitorModule) "
                 "send_empty must be boolean")
Esempio n. 10
0
 def _configure(self, config):
     self._vip = stringToBool(config.setdefault('vip', 'true'))
     self._clovers = stringToBool(config.setdefault('clovers', 'true'))
Esempio n. 11
0
    def _finishInitialization(self):
        # get list of clan members (both in whitelist and roster)
        self.log("Initializing ranks...")
        r1 = ClanWhitelistRequest(self.session)
        d1 = self.tryRequest(r1)
        self._ranks = {
            _rankTransform(rank['rankName']): rank
            for rank in d1['ranks']
        }
        r2 = StatusRequest(self.session)
        d2 = self.tryRequest(r2)
        self._rolloverTime = int(d2['rollover'])

        # load promotion rules
        self._promotionRules = {}
        for rankname, rule in self._ruleConfig.items():
            key = _rankTransform(rankname)
            nextRankName = toTypeOrNone(rule['next_rank'])
            nextkey = _rankTransform(nextRankName) if nextRankName else None
            nextRankId = self._ranks.get(nextkey, {}).get('rankId')

            if key not in self._ranks:
                raise FatalError(
                    "Invalid clan rank: {} (available ranks: {})".format(
                        key, ", ".join(self._ranks.keys())))
            if nextkey is not None and nextkey not in self._ranks:
                raise FatalError(
                    "Invalid clan rank: {} (available ranks: {})".format(
                        nextkey, ", ".join(self._ranks.keys())))

            try:
                self._promotionRules[self._ranks[key]['rankId']] = ({
                    'demotionAllowed':
                    stringToBool(rule['demotion_allowed']),
                    'minKarma':
                    int(rule['min_karma']),
                    'minDaysBeforePromotion':
                    int(rule['min_days_until_next_promotion']),
                    'minDaysInClan':
                    int(rule['min_days_in_clan']),
                    'nextRankId':
                    nextRankId,
                    'rankName':
                    rankname
                })
            except ValueError:
                raise "ClanRankModule: error parsing rank {}".format(rankname)

        # pick a random time to run today
        assumedExecTime = 7200
        latestPossibleExecTime = self._rolloverTime - assumedExecTime
        if time.time() < self._lastRun:
            self.log("Already performed ranking today.")
        elif time.time() > latestPossibleExecTime:
            self.log("Too late to run rankings today.")
        else:
            if self._immediate:
                self._execTime = int(time.time()) + 15
            else:
                self._execTime = random.randint(int(time.time()),
                                                latestPossibleExecTime)
            self.log("Running rankings in {} minutes.".format(
                int((self._execTime - time.time()) / 60)))
Esempio n. 12
0
 def _configure(self, config):
     self._announce = stringToBool(config.setdefault('announce', "True"))
Esempio n. 13
0
 def _configure(self, config):
     self._vip = stringToBool(config.setdefault('vip', 'true'))
     self._clovers = stringToBool(config.setdefault('clovers', 'true'))