From d62c4b9b194ad6233107cf71a87870441b2b0d4b Mon Sep 17 00:00:00 2001 From: Kaufmann Date: Wed, 2 Apr 2025 11:16:56 +0200 Subject: Vorstellung des Ausfallzeitenrechners im JF von Abt. 2.5. Initiale Kritik: Kommentarfeld, speichern als PDF, Datumsformat --- prediction_controller.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 prediction_controller.py (limited to 'prediction_controller.py') diff --git a/prediction_controller.py b/prediction_controller.py new file mode 100644 index 0000000..c3be8cc --- /dev/null +++ b/prediction_controller.py @@ -0,0 +1,48 @@ +# prediction_controller.py +from dateutil.relativedelta import relativedelta +from datetime import datetime, timedelta +import math + +class PredictionController: + def __init__(self, calendar_manager, date_calculator, keyword_list): + self.calendar_manager = calendar_manager + self.date_calculator = date_calculator + self.launch_date = None + self.duration = None + self.prediction = None + self.keyword_list = keyword_list + for keyword in keyword_list: + self.keyword = [] + + def set_parameters(self, launch_date, duration_years): + self.launch_date = datetime.fromisoformat(launch_date) + self.duration = relativedelta(years=duration_years) + + def make_prediction(self, launch_date, duration_years): + self.set_parameters(launch_date, duration_years) + + prediction = self.launch_date + self.duration - timedelta(days=1) + + keyword_args = {} + + for entry in self.calendar_manager.entries: + for keyword in self.keyword_list: + if entry.keyword == keyword: + if keyword not in keyword_args: + keyword_args[keyword] = [] + keyword_args[keyword].append((entry.start_date, entry.end_date, entry.id)) + break + # print(keyword_args) + prediction, corrected_events = self.date_calculator.calculate_prediction(self.launch_date, self.duration, **keyword_args) + self.prediction = prediction + self.calendar_manager.correct_dates(corrected_events) + + def get_launch_date(self): + return self.launch_date + + def get_duration(self): + return self.duration + + def get_prediction(self): + return self.prediction + -- cgit v1.1