61 lines
2.8 KiB
Python
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)
|