(self, params, **kwargs)
| 1891 | return aging_report_parser |
| 1892 | |
| 1893 | def execute(self, params, **kwargs): |
| 1894 | def get_floor(duration): # type: (str) -> Union[datetime.datetime, None] |
| 1895 | now_dt = datetime.datetime.now() |
| 1896 | if not duration: |
| 1897 | logging.info('\n\nThe default password aging period is 3 months\n' |
| 1898 | 'To change this value pass --period=[PERIOD] parameter\n' |
| 1899 | '[PERIOD] example: 10d for 10 days; 3m for 3 months; 1y for 1 year\n\n') |
| 1900 | duration = '3m' |
| 1901 | co = duration[-1] |
| 1902 | try: |
| 1903 | va = abs(int(duration[:-1])) |
| 1904 | except: |
| 1905 | logging.warning(f'Invalid period: {duration}') |
| 1906 | return None |
| 1907 | |
| 1908 | if co != 'd': |
| 1909 | if co == 'm': |
| 1910 | va *= 30 |
| 1911 | elif co == 'y': |
| 1912 | va *= 365 |
| 1913 | else: |
| 1914 | logging.warning(f'Invalid period: {duration}') |
| 1915 | return None |
| 1916 | return now_dt - datetime.timedelta(days=va) |
| 1917 | |
| 1918 | def parse_date(date_str): |
| 1919 | fmts = ['%Y-%m-%d', '%Y.%m.%d', '%Y/%m/%d', '%m-%d-%Y', '%m.%d.%Y', '%m/%d/%Y'] |
| 1920 | for fmt in fmts: |
| 1921 | try: |
| 1922 | return datetime.datetime.strptime(date_str, fmt) |
| 1923 | except ValueError: |
| 1924 | pass |
| 1925 | fmts_str = '\n'.join(fmts) |
| 1926 | msg = 'Unrecognized date format: must be one of the following\n' + fmts_str |
| 1927 | raise CommandError('aging-report', msg) |
| 1928 | |
| 1929 | enterprise_id = next(((x['node_id'] >> 32) for x in params.enterprise['nodes']), 0) |
| 1930 | if kwargs.get('delete') is True: |
| 1931 | db_name = get_sox_database_name(params, enterprise_id) |
| 1932 | if os.path.isfile(db_name): |
| 1933 | os.remove(db_name) |
| 1934 | logging.info('Local encrypted storage has been deleted.') |
| 1935 | else: |
| 1936 | logging.info('Local encrypted storage does not exist.') |
| 1937 | return |
| 1938 | |
| 1939 | cutoff_date = kwargs.get('cutoff_date') |
| 1940 | period = kwargs.get('period') |
| 1941 | dt = parse_date(cutoff_date) if cutoff_date else get_floor(period) |
| 1942 | period_min_ts = int(dt.timestamp()) |
| 1943 | |
| 1944 | rebuild = kwargs.get('rebuild') |
| 1945 | exclude_deleted = kwargs.get('exclude_deleted') |
| 1946 | in_shared_folder = kwargs.get('in_shared_folder') |
| 1947 | node_id = get_node_id(params, enterprise_id) |
| 1948 | |
| 1949 | # Pre-filter to specific user if --username is set |
| 1950 | user_filter = None |
nothing calls this directly
no test coverage detected