"""Regenerate custom reports.""" import logging import sys sys.path.append('') logging.basicConfig(level=logging.INFO) from scripts.utils import get_env # noqa: E402 from moneyhub.config import Config # noqa: E402 from moneyhub.connectors import sqs # noqa: E402 from moneyhub.constants.constants import ReportCustomStatus # noqa: E402 from moneyhub.models import ReportCustom # noqa: E402 def _run(statement_period_id: int, report_custom_ids: list): """Regenerate custom reports for the given period, filtered by the IDs. Args: statement_period_id (int): Statement period to regenerate reports for report_custom_ids (list): List of IDs of the reports to regenerate """ reports = ReportCustom.get_by_statement_period(statement_period_id, report_custom_ids) if len(reports) == 0: logging.warning('No custom reports to regenerate; exiting...') return messages = [] for report in reports: logging.info(f'Regenerating report: {report.report_custom_id}') messages.append({'report_custom_id': report.report_custom_id}) report.report_custom_status = ReportCustomStatus.IN_PROGRESS ReportCustom.commit_changes() sqs.send_messages( Config.SQS_MH_CUSTOM_REPORTS_QUEUE_NAME, None, messages) logging.info(f'Sent {len(messages)} messages') if __name__ == '__main__': statement_period_id = int(get_env('STATEMENT_PERIOD_ID', True)) report_custom_ids = list(map(int, get_env('REPORT_CUSTOM_IDS').split(','))) if ( get_env('REPORT_CUSTOM_IDS')) else None _run(statement_period_id, report_custom_ids)