Guillaume RYCKELYNCK c6c2ee9c04 first commit
2024-06-22 22:00:42 +02:00

61 lines
2.8 KiB
Python

import click
from sdi_checker.app_cli import display_report
@click.command(name='layers')
@click.argument('file', nargs=-1)
@click.option('--directory', '-d', default='', multiple=False, type=str, help='Path to directory of report files')
@click.option('--csv', '-c', default='', multiple=False, type=str, help='Filename to save data to CSV')
@click.option('--search', '-s', default='', multiple=False, type=str, help='Search query to filter layers list')
@click.option('--workspace', '-ws', default='', multiple=False, type=str, help='Filter layers list according workspace name (if report type is WMS or WFS)')
@click.option('--name', '-n', default='', multiple=False, type=str, help='Filter layers list according name layer')
@click.option('--id', '-i', default=None, multiple=False, help='Id of layers to display')
@click.option('--limit', '-l', default='10', type=str, help='Number of layers to return')
@click.option('--export', '-e', default=None, type=str, help='Filename to export result')
@click.pass_obj
def run(app, file, directory, csv, search, workspace, name, id, limit, export):
"""
> layers [FILE] [--csv CSV] [--search SEARCH] [--workspace WS] [--id ID] [--limit LIMIT] [--export EXPORT]
Affiche la liste des layers du rapport [FILE]
"""
on_layers(app, file, directory, csv, search, workspace, name, id, limit, export)
def on_layers(app, file, directory, csv, search, workspace, name, id, limit, export):
"""
> layers [FILE] [--csv CSV] [--search SEARCH] [--workspace WS] [--id ID] [--limit LIMIT] [--export EXPORT]
Affiche la liste des layers du rapport [FILE]
"""
if not file or file is None or len(file) == 0:
app.echo('')
app.echo('ERROR: [FILE] argument is missing.')
display_report.print_reports_list(app, app.config['reports'], title="Thanks to indicate a [FILE] id.", echo=True)
sys.exit()
result = []
# TODO: check if file is integer (list of reports) or string (path or URL - start with 'http')
file = [int(i.strip()) for i in ','.join(file).split(',')][0]
report = app.config['reports'][file]
if id:
data = app.get_layers(report=report, id=id)
data_errors = data['layers'][0]['errors']
result.extend(display_report.print_layers(app, report, data, id=id))
result.extend(display_report.print_layer_errors(app, report, data_errors or []))
else:
data = app.get_layers(report=report, filter=search, workspace=workspace, name=name)
result.extend(display_report.print_layers(app, report, data, limit, search=search, workspace=workspace, name=name))
if csv:
app.save_data_to_csv(csv, data['layers'])
if export:
with open(export, 'w') as f:
result_text = '\n'.join(result)
f.write(result_text)
result_text = '\n'.join(result)
app.echo(result_text)