diff options
Diffstat (limited to 'run.py')
-rwxr-xr-x | run.py | 36 |
1 files changed, 24 insertions, 12 deletions
@@ -11,19 +11,29 @@ app.jinja_env.add_extension('jinja2_highlight.HighlightExtension') app.jinja_env.extend(jinja2_highlight_cssclass = 'codehilite') -def get_files(directory): - files = os.listdir(directory) - files.sort() - return files +def get_directories(directory): + dirents = os.scandir(directory) + directories = filter(lambda de: de.is_dir(), dirents) + return map(lambda d: d.name.split('/')[-1], directories) + +def get_channels(directory, network): + path = os.path.join(directory, network) + return get_directories(path) + +def get_logs(base_dir, network, channel): + dirents = os.scandir(os.path.join(base_dir, network, channel)) + files = filter(lambda de: de.is_file(), dirents) + log_names = map(lambda f: f.name.replace('{}.'.format(channel), '').replace('.log', ''), files) + return log_names @app.route('/') def index(): networks = [] - for network_name in get_files(app.config['ZNC_LOG_DIR']): + for network_name in get_directories(app.config['ZNC_LOG_DIR']): network_url = '{}/{}'.format(app.config['URL'], network_name) channels = [] - for channel_name in get_files(os.path.join(app.config['ZNC_LOG_DIR'], network_name)): + for channel_name in get_channels(app.config['ZNC_LOG_DIR'], network_name): channel_url = '{}/{}'.format(network_url, quote_plus(channel_name)) channel = Channel(channel_name, channel_url, '') channels += [channel] @@ -36,7 +46,7 @@ def get_network(network_name): network_url = '{}/{}'.format(app.config['URL'], network_name) channels = [] - for channel_name in get_files(os.path.join(app.config['ZNC_LOG_DIR'], network_name)): + for channel_name in get_directories(os.path.join(app.config['ZNC_LOG_DIR'], network_name)): channel_url = '{}/{}'.format(network_url, quote_plus(channel_name)) channel = Channel(channel_name, channel_url, '') @@ -51,7 +61,7 @@ def channel_logs(network_name, channel_name): channel_url = '{}/{}'.format(network_url, quote_plus(channel_name)) logs = [] - for log_file in get_files(os.path.join(app.config['ZNC_LOG_DIR'], network_name, channel_name)): + for log_file in get_logs(app.config['ZNC_LOG_DIR'], network=network_name, channel=channel_name): log_url = '{}/{}'.format(channel_url, log_file) log = Log(log_file, log_url) @@ -61,10 +71,12 @@ def channel_logs(network_name, channel_name): network = Network(network_name, network_url, [channel]) return(render_template('show_channel.html', network=network, channel=channel, url=app.config['URL'])) -@app.route('/<network_name>/<channel_name>/<log_file>') -def get_log(network_name, channel_name, log_file): - with open(os.path.join(app.config['ZNC_LOG_DIR'], network_name, channel_name, log_file), 'rb') as file: - log = file.read().decode('utf-8', 'ignore') +@app.route('/<network_name>/<channel_name>/<date>') +def get_log(network_name, channel_name, date): + file_name = '{}.{}.log'.format(channel_name, date) + path = os.path.join(app.config['ZNC_LOG_DIR'], network_name, channel_name, file_name) + with open(path, 'rb') as fp: + log = fp.read().decode('utf-8', 'ignore') return(render_template('log.html', log=log)) @app.route('/static/<path:filename>') |