diff --git a/konova/management/commands/send_to_egon.py b/konova/management/commands/send_to_egon.py new file mode 100644 index 0000000..c2a5b76 --- /dev/null +++ b/konova/management/commands/send_to_egon.py @@ -0,0 +1,54 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: ksp-servicestelle@sgdnord.rlp.de +Created on: 18.06.24 + +""" +from django.db.models import QuerySet + +from intervention.models import Intervention +from konova.management.commands.setup import BaseKonovaCommand + + +class Command(BaseKonovaCommand): + help = "Send specific intervention entries to EGON if there are any payments on them" + + def add_arguments(self, parser): + try: + parser.add_argument("--intervention-ids", type=str) + except ValueError as e: + self._write_error(f"Argument error: {e}") + exit(-1) + + def __handle_arguments(self, options): + self.intervention_ids = options["intervention_ids"] or "" + self.intervention_ids = self.intervention_ids.split(",") + self.intervention_ids = [x.strip() for x in self.intervention_ids] + + def handle(self, *args, **options): + try: + self.__handle_arguments(options) + interventions = self.get_interventions() + self.process_egon_sending(interventions) + except KeyboardInterrupt: + self._break_line() + exit(-1) + + def get_interventions(self) -> QuerySet: + """ + Getter for interventions, defined by parameter 'intervention-ids' + + Returns: + interventions (QuerySet): The interventions + """ + interventions = Intervention.objects.filter( + id__in=self.intervention_ids, + ) + self._write_success(f"... Found {interventions.count()} interventions") + return interventions + + def process_egon_sending(self, interventions: QuerySet): + for intervention in interventions: + intervention.send_data_to_egon() + self._write_warning(f"... {intervention.identifier} has been sent to EGON (if it has payments)")