| 1817 | return list_parser |
| 1818 | |
| 1819 | def execute(self, params, **kwargs): |
| 1820 | verbose = kwargs.get('verbose', False) |
| 1821 | fmt = kwargs.get('format', 'table') |
| 1822 | # Use the --field parameter(s) if provided. |
| 1823 | search_fields = kwargs.get('field') # Can be a list if passed multiple times. |
| 1824 | pattern = kwargs.get('pattern') |
| 1825 | |
| 1826 | record_types = kwargs.get('record_type') |
| 1827 | if record_types: |
| 1828 | record_version = set() |
| 1829 | record_type = set() |
| 1830 | if isinstance(record_types, str): |
| 1831 | record_types = [record_types] |
| 1832 | for rt in record_types: |
| 1833 | if rt == 'app': |
| 1834 | record_version.add(5) |
| 1835 | elif rt == 'file': |
| 1836 | record_version.update((3, 4)) |
| 1837 | record_type.add('file') |
| 1838 | elif rt in ('general', 'legacy'): |
| 1839 | record_version.update((1, 2)) |
| 1840 | elif rt == 'pam': |
| 1841 | record_version.add(6) |
| 1842 | else: |
| 1843 | record_version.update((3, 6)) |
| 1844 | record_type.add(rt) |
| 1845 | else: |
| 1846 | record_version = None if verbose else (1, 2, 3) |
| 1847 | record_type = None |
| 1848 | |
| 1849 | records = [x for x in vault_extensions.find_records( |
| 1850 | params, |
| 1851 | pattern, |
| 1852 | record_type=record_type, |
| 1853 | record_version=record_version, |
| 1854 | search_fields=search_fields, |
| 1855 | use_regex=True)] |
| 1856 | if any(records): |
| 1857 | headers = ['record_uid', 'type', 'title', 'description', 'shared', 'record_category'] |
| 1858 | if fmt == 'table': |
| 1859 | headers = [base.field_to_title(x) for x in headers] |
| 1860 | table = [] |
| 1861 | for record in records: |
| 1862 | # Determine if record is from Nested Share Folder or Classic |
| 1863 | is_nested_share = hasattr(params, 'nested_share_records') and record.record_uid in params.nested_share_records |
| 1864 | record_category = 'nested' if is_nested_share else 'classic' |
| 1865 | row = [record.record_uid, record.record_type, record.title, |
| 1866 | vault_extensions.get_record_description(record), record.shared, record_category] |
| 1867 | table.append(row) |
| 1868 | table.sort(key=lambda x: (x[2] or '').lower()) |
| 1869 | if fmt != 'json': |
| 1870 | headers = [base.field_to_title(x) for x in headers] |
| 1871 | return base.dump_report_data(table, headers, fmt=fmt, filename=kwargs.get('output'), |
| 1872 | row_number=True, column_width=None if verbose else 40) |
| 1873 | else: |
| 1874 | return handle_empty_result(fmt, 'No records are found', kwargs.get('output')) |
| 1875 | |
| 1876 | |