From 37aca84605ccabd51811b7581f543ebdd32bf890 Mon Sep 17 00:00:00 2001 From: gryf Date: Sat, 10 Mar 2018 18:39:29 +0100 Subject: [PATCH] Added NoneReporter --- slack_backup/reporters.py | 54 +++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/slack_backup/reporters.py b/slack_backup/reporters.py index 248ec80..977832c 100644 --- a/slack_backup/reporters.py +++ b/slack_backup/reporters.py @@ -18,6 +18,18 @@ from slack_backup import emoji class Reporter(object): """Base reporter class""" ext = '' + symbols = {'plain': {'join': '->', + 'leave': '<-', + 'me': '*', + 'file': '-', + 'topic': '+', + 'separator': '|'}, + 'unicode': {'join': '⮊', + 'leave': '⮈', + 'me': '🟊', + 'file': '📂', + 'topic': '🟅', + 'separator': '│'}} url_pat = re.compile(r'(?P]+>)') slackid_pat = re.compile(r'(?P<@' '(?PU[A-Z,0-9]+)(\|[^>]+)?[^>]*>)') @@ -31,26 +43,28 @@ class Reporter(object): "channel_topic": self._msg_topic, "file_share": self._msg_file, "me_message": self._msg_me} - self.symbols = {'plain': {'join': '->', - 'leave': '<-', - 'me': '*', - 'file': '-', - 'topic': '+', - 'separator': '|'}, - 'unicode': {'join': '⮊', - 'leave': '⮈', - 'me': '🟊', - 'file': '📂', - 'topic': '🟅', - 'separator': '│'}} + self.emoji = emoji.EMOJI.get(args.theme, {}) self.channels = self._get_channels(args.channels) self.users = self.q(o.User).all() def generate(self): - """Generate raport it's a dummmy one - for use with none reporter""" - return + """Generate raport for each channel""" + for channel in self.channels: + messages = [] + log_path = self.get_log_path(channel.name) + self._set_max_len(channel) + try: + os.unlink(log_path) + except IOError as err: + if err.errno != errno.ENOENT: + raise + for message in self.q(o.Message).\ + filter(o.Message.channel == channel).\ + order_by(o.Message.ts).all(): + messages.append(message) + self.write_msg(messages, log_path) def get_log_path(self, name): """Return relative log file name """ @@ -114,6 +128,14 @@ class Reporter(object): return text +class NoneReporter(Reporter): + """Dummy reporter used for fallback""" + + def generate(self): + """Generate raport it's a dummmy one - for use with none reporter""" + return + + class TextReporter(Reporter): """Text aka IRC reporter""" ext = '.log' @@ -210,7 +232,6 @@ class TextReporter(Reporter): """return formatter for file""" fpath = os.path.abspath(msg.file.filepath) - data = {'date': msg.datetime().strftime("%Y-%m-%d %H:%M:%S"), 'msg': self.url_pat.sub('(file://' + fpath + ') ' + msg.file.title, text), @@ -254,7 +275,6 @@ class TextReporter(Reporter): """replace html entites into appropriate chars""" return html.parser.HTMLParser().unescape(text) - def _fix_newlines(self, text): """Shift text with new lines to the right with separator""" shift = 19 # length of the date @@ -269,7 +289,7 @@ def get_reporter(args, query): """Return object of right reporter class""" reporters = {'text': TextReporter} - klass = reporters.get(args.format, Reporter) + klass = reporters.get(args.format, NoneReporter) if klass.__name__ == 'Reporter': logging.warning('None, or wrong (%s) formatter selected, falling to' ' None Reporter', args.format)