def render_admin_panel(self, req, cat, page, path_info): req.perm.require('SPAM_CONFIG') bayes = BayesianFilterStrategy(self.env) hammie = bayes._get_hammie() data = {} if req.method == 'POST': if 'train' in req.args: bayes.train(None, None, req.args['bayes_content'], '127.0.0.1', spam='spam' in req.args['train'].lower()) req.redirect(req.href.admin(cat, page)) elif 'test' in req.args: bayes_content = req.args['bayes_content'] data['content'] = bayes_content try: data['score'] = hammie.score(bayes_content.encode('utf-8')) except Exception, e: self.log.warn('Bayes test failed: %s', e, exc_info=True) data['error'] = unicode(e) else: if 'reset' in req.args: self.log.info('Resetting SpamBayes training database') self.env.db_transaction("DELETE FROM spamfilter_bayes") elif 'reduce' in req.args: self.log.info('Reducing SpamBayes training database') bayes.reduce() min_training = req.args.as_int('min_training') if min_training is not None and \ min_training != bayes.min_training: self.config.set('spam-filter', 'bayes_min_training', min_training) self.config.save() min_dbcount = req.args.as_int('min_dbcount') if min_dbcount is not None and \ min_dbcount != bayes.min_dbcount: self.config.set('spam-filter', 'bayes_min_dbcount', min_dbcount) self.config.save() req.redirect(req.href.admin(cat, page))
def render_admin_panel(self, req, cat, page, path_info): req.perm.assert_permission('SPAM_CONFIG') bayes = BayesianFilterStrategy(self.env) hammie = bayes._get_hammie() data = {} if req.method == 'POST': if 'train' in req.args: bayes.train(None, None, req.args['content'], spam='spam' in req.args['train'].lower()) req.redirect(req.href.admin(cat, page)) elif 'test' in req.args: data['content'] = req.args['content'] try: data['score'] = hammie.score(req.args['content'].encode('utf-8')) except Exception, e: self.log.warn('Bayes test failed: %s', e, exc_info=True) data['error'] = unicode(e) else: if 'reset' in req.args: self.log.info('Resetting SpamBayes training database') db = self.env.get_db_cnx() cursor = db.cursor() cursor.execute("DELETE FROM spamfilter_bayes") db.commit() try: min_training = int(req.args['min_training']) if min_training != bayes.min_training: self.config.set('spam-filter', 'bayes_min_training', min_training) self.config.save() except ValueError: pass req.redirect(req.href.admin(cat, page))