| 1500 | return dump_report_data(table, headers, title=title, fmt=fmt, filename=out) |
| 1501 | |
| 1502 | def execute(self, params, **kwargs): |
| 1503 | verbose = kwargs.get('verbose') is True |
| 1504 | show_team_users = kwargs.get('show_team_users') is True |
| 1505 | if show_team_users: |
| 1506 | verbose = True |
| 1507 | output_format = kwargs.get('format', 'table') |
| 1508 | user_filter = set() |
| 1509 | record_filter = set() |
| 1510 | |
| 1511 | if kwargs.get('folders'): |
| 1512 | report = ShareReportCommand.sf_report( |
| 1513 | params, |
| 1514 | out=kwargs.get('output'), |
| 1515 | fmt=kwargs.get('format'), |
| 1516 | show_team_users=show_team_users |
| 1517 | ) |
| 1518 | return report |
| 1519 | |
| 1520 | containers = kwargs.get('container') or [] |
| 1521 | containers = [get_folder_uids(params, container) for container in containers] |
| 1522 | containers = [uid for uids in containers for uid in uids] |
| 1523 | containers = [uid for uid in containers if uid] |
| 1524 | recs_by_containers = {k: v for c in containers for k, v in get_contained_record_uids(params, c, False).items()} |
| 1525 | contained_records = {r for k, recs in recs_by_containers.items() for r in recs} |
| 1526 | |
| 1527 | if kwargs.get('record'): |
| 1528 | records = kwargs.get('record') or [] |
| 1529 | for r in records: |
| 1530 | if r in params.record_cache: |
| 1531 | record_filter.add(r) |
| 1532 | else: |
| 1533 | r_uid = None |
| 1534 | rs = try_resolve_path(params, r) |
| 1535 | if rs is not None: |
| 1536 | sf, name = rs |
| 1537 | if name: |
| 1538 | shared_folder_uid = sf.uid or '' |
| 1539 | if shared_folder_uid in params.subfolder_record_cache: |
| 1540 | for uid in params.subfolder_record_cache[shared_folder_uid]: |
| 1541 | rec = api.get_record(params, uid) |
| 1542 | if name in {rec.title, rec.record_uid}: |
| 1543 | r_uid = rec.record_uid |
| 1544 | break |
| 1545 | if r_uid: |
| 1546 | record_filter.add(r_uid) |
| 1547 | else: |
| 1548 | raise CommandError('share-report', '\'{0}\' is not an existing record title or UID'.format(r)) |
| 1549 | |
| 1550 | record_uids = {x for x in record_filter} |
| 1551 | elif kwargs.get('user'): |
| 1552 | for u in kwargs['user']: |
| 1553 | user_filter.add(u) |
| 1554 | |
| 1555 | record_uids = {x['record_uid'] for x in params.record_cache.values() if x['shared']} |
| 1556 | else: |
| 1557 | record_uids = {x['record_uid'] for x in params.record_cache.values() if x['shared']} |
| 1558 | |
| 1559 | record_uids = record_uids.intersection(contained_records) if contained_records else record_uids |