From c836fafb61066d54af6f9726b00a83e6ae8451af Mon Sep 17 00:00:00 2001 From: John Westcott IV Date: Tue, 31 May 2022 17:07:41 -0400 Subject: [PATCH] modifying schedules API to return a list of links --- awx/api/views/__init__.py | 4 ++-- awx/main/models/schedules.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/awx/api/views/__init__.py b/awx/api/views/__init__.py index f864ab2d5e..fa858f7808 100644 --- a/awx/api/views/__init__.py +++ b/awx/api/views/__init__.py @@ -578,8 +578,8 @@ class ScheduleZoneInfo(APIView): swagger_topic = 'System Configuration' def get(self, request): - zones = [{'name': zone} for zone in models.Schedule.get_zoneinfo()] - return Response(zones) + zone_info = models.Schedule.get_zoneinfo_with_links() + return Response(zone_info) class LaunchConfigCredentialsBase(SubListAttachDetachAPIView): diff --git a/awx/main/models/schedules.py b/awx/main/models/schedules.py index 8f9caec131..f409b3ec03 100644 --- a/awx/main/models/schedules.py +++ b/awx/main/models/schedules.py @@ -88,6 +88,24 @@ class Schedule(PrimordialModel, LaunchTimeConfig): def get_zoneinfo(self): return sorted(get_zonefile_instance().zones) + @classmethod + def get_zoneinfo_with_links(self): + zone_instance = get_zonefile_instance() + return_val = {'zones': sorted(zone_instance.zones), 'links': {}} + for zone_name in return_val['zones']: + if str(zone_name) != str(zone_instance.zones[zone_name]._filename): + return_val['links'][zone_name] = zone_instance.zones[zone_name]._filename + return return_val + + @classmethod + def get_linked_timezone(self, timezone_name): + # Returns two values: + # A boolean True means its linked, false means its not a linked timezone + # The name of the link (or the same name if its not a link) + zone_instance = get_zonefile_instance() + file_name = zone_instance.zones[timezone_name]._filename + return file_name != timezone_name, file_name + @property def timezone(self): utc = tzutc()