diff options
| author | Kaufmann <Kau@avh.de> | 2025-04-02 11:16:56 +0200 |
|---|---|---|
| committer | Kaufmann <Kau@avh.de> | 2025-04-02 11:16:56 +0200 |
| commit | d62c4b9b194ad6233107cf71a87870441b2b0d4b (patch) | |
| tree | c9934e2f10022e69c38a639500b1fec64105cf8e /prediction_controller.py | |
Vorstellung des Ausfallzeitenrechners im JF von Abt. 2.5.
Initiale Kritik: Kommentarfeld, speichern als PDF, Datumsformat
Diffstat (limited to 'prediction_controller.py')
| -rw-r--r-- | prediction_controller.py | 48 |
1 files changed, 48 insertions, 0 deletions
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 + |
