From 8a2a6ea6c7a0cc2f5e008abacc8724a96542710a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20K=C3=BCnsem=C3=B6ller?= <jkuensem@physik.uni-bielefeld.de> Date: Wed, 6 Nov 2024 11:30:01 +0100 Subject: [PATCH 1/3] TMSS-2808: fix time inversion issue with some units --- .../backend/src/tmss/tmssapp/adapters/reports.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py index c94deff12f0..cd95145f8e7 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py @@ -69,11 +69,14 @@ class CycleReport(): # by the cycle. (No need to handle the parts outside the cycle because these time are not included anyway.) # Note: we do not use self.subs here because we purposefully do not want to filter on projects etc. for sub in models.SchedulingUnitBlueprint.objects.filter(on_sky_start_time__lt=stop, on_sky_stop_time__gt=start)\ + .filter(on_sky_start_time__lt=F('on_sky_stop_time'))\ .only('on_sky_start_time', 'on_sky_stop_time'): - new_idle_ranges = [] - for range in idle_ranges: - new_idle_ranges += range.subtract(DateTimeRange(sub.on_sky_start_time, sub.on_sky_stop_time)) - idle_ranges = new_idle_ranges + if sub.on_sky_start_time < sub.on_sky_stop_time: + new_idle_ranges = [] + sub_range = DateTimeRange(sub.on_sky_start_time, sub.on_sky_stop_time) + for range in idle_ranges: + new_idle_ranges += range.subtract(sub_range) + idle_ranges = new_idle_ranges idle_seconds = sum([range.get_timedelta_second() for range in idle_ranges]) return idle_seconds @@ -360,8 +363,9 @@ class CycleReport(): standalone_reservations = [res for res in standalone_reservations if len(res.specifications_doc.get('resources', {}).get('stations', [])) >= 3] # Determine scheduling units in reporting period - # Note: we do not use self.subs because we purposefully do not want to filter for projects etc here. # todo: correct? - subs_in_period = models.SchedulingUnitBlueprint.objects.filter(on_sky_start_time__lt=stop, on_sky_stop_time__gt=start) + # Note: we do not use self.subs because we purposefully do not want to filter for projects etc here. + subs_in_period = models.SchedulingUnitBlueprint.objects.filter(on_sky_start_time__lt=stop, on_sky_stop_time__gt=start)\ + .filter(on_sky_start_time__lt=F('on_sky_stop_time')) ilt_stations = ['DE601', 'DE602', 'DE603', 'DE604', 'DE605', 'DE609', 'FR606', 'SE607', 'UK608', 'PL610', 'PL611', 'PL612', 'IE613', 'LV614'] subs_in_period_int = subs_in_period.filter(task_blueprints__subtasks__specifications_doc__stations__overlap=ilt_stations) \ | subs_in_period.filter (task_blueprints__subtasks__specifications_doc__station_list__overlap=ilt_stations) -- GitLab From c9fd70fb10786f28f7579e031c3ece2203a6ab8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20K=C3=BCnsem=C3=B6ller?= <jkuensem@physik.uni-bielefeld.de> Date: Wed, 6 Nov 2024 11:54:52 +0100 Subject: [PATCH 2/3] TMSS-2808: fix time inversion issue with some units --- SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py index cd95145f8e7..746985f52af 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py @@ -71,11 +71,11 @@ class CycleReport(): for sub in models.SchedulingUnitBlueprint.objects.filter(on_sky_start_time__lt=stop, on_sky_stop_time__gt=start)\ .filter(on_sky_start_time__lt=F('on_sky_stop_time'))\ .only('on_sky_start_time', 'on_sky_stop_time'): - if sub.on_sky_start_time < sub.on_sky_stop_time: - new_idle_ranges = [] - sub_range = DateTimeRange(sub.on_sky_start_time, sub.on_sky_stop_time) - for range in idle_ranges: - new_idle_ranges += range.subtract(sub_range) + + new_idle_ranges = [] + sub_range = DateTimeRange(sub.on_sky_start_time, sub.on_sky_stop_time) + for range in idle_ranges: + new_idle_ranges += range.subtract(sub_range) idle_ranges = new_idle_ranges idle_seconds = sum([range.get_timedelta_second() for range in idle_ranges]) -- GitLab From 45b8086296af52ab4a76b0e753eafc522e979dc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20K=C3=BCnsem=C3=B6ller?= <jkuensem@physik.uni-bielefeld.de> Date: Wed, 6 Nov 2024 11:55:27 +0100 Subject: [PATCH 3/3] TMSS-2808: fix time inversion issue with some units --- SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py index 746985f52af..7f941d250c3 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py @@ -76,7 +76,7 @@ class CycleReport(): sub_range = DateTimeRange(sub.on_sky_start_time, sub.on_sky_stop_time) for range in idle_ranges: new_idle_ranges += range.subtract(sub_range) - idle_ranges = new_idle_ranges + idle_ranges = new_idle_ranges idle_seconds = sum([range.get_timedelta_second() for range in idle_ranges]) return idle_seconds -- GitLab