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)