Coverage for functions \ flipdare \ task \ command \ default_command.py: 86%
14 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-05-08 12:22 +1000
« prev ^ index » next coverage.py v7.13.0, created at 2026-05-08 12:22 +1000
1#!/usr/bin/env python
2# Copyright (c) 2026 Flipdare Pty Ltd. All rights reserved.
3#
4# This file is part of Flipdare's proprietary software and contains
5# confidential and copyrighted material. Unauthorised copying,
6# modification, distribution, or use of this file is strictly
7# prohibited without prior written permission from Flipdare Pty Ltd.
8#
9# This software includes third-party components licensed under MIT,
10# BSD, and Apache 2.0 licences. See THIRD_PARTY_NOTICES for details.
11#
14from collections.abc import Callable
15from flipdare.result.output_result import OutputResult
16from flipdare.task.command._base_command import BaseCommand
17from flipdare.backend.app_logger import AppLogger
18from flipdare.mailer.admin.command_email import CommandEmail
19from flipdare.mailer.admin_mailer import AdminMailer
20from flipdare.generated.schema.email.body.admin.command_email_schema import CommandEmailSchema
21from flipdare.generated.shared.backend.app_job_type import AppJobType
22from flipdare.util.time_util import TimeUtil
25class DefaultCommand(BaseCommand[CommandEmailSchema]):
26 def __init__(
27 self,
28 job_type: AppJobType,
29 command_callback: Callable[[], None | OutputResult],
30 app_logger: AppLogger | None = None,
31 mailer: AdminMailer | None = None,
32 ) -> None:
33 super().__init__(
34 job_type=job_type,
35 schema_class=CommandEmailSchema,
36 command_callback=command_callback,
37 email_callback=self._build_template,
38 app_logger=app_logger,
39 mailer=mailer,
40 )
42 def _build_template(
43 self,
44 message: str,
45 ex_error: Exception | None,
46 ) -> CommandEmail:
47 return CommandEmail(
48 command_date=TimeUtil.formatted_now(),
49 command_name=self.command_name,
50 description=self.command_description,
51 message=message,
52 ex_error=ex_error,
53 )