Refactor code and split into multiple files #9

Merged
kbe merged 6 commits from develop into main 2025-08-11 23:44:32 +00:00
Showing only changes of commit 944421c68b - Show all commits

View File

@@ -424,10 +424,6 @@ class CrossFitBooker:
# Display all available sessions within the date range # Display all available sessions within the date range
self.display_upcoming_sessions(activities, current_time) self.display_upcoming_sessions(activities, current_time)
# Display preferred sessions found
# Display booked session(s)
# Find sessions to book (preferred only) within allowed date range # Find sessions to book (preferred only) within allowed date range
found_preferred_sessions: List[Dict[str, Any]] = [] found_preferred_sessions: List[Dict[str, Any]] = []
@@ -446,29 +442,57 @@ class CrossFitBooker:
if self.matches_preferred_session(session, current_time): if self.matches_preferred_session(session, current_time):
found_preferred_sessions.append(session) found_preferred_sessions.append(session)
# Display preferred sessions found
if found_preferred_sessions:
logging.info("Preferred sessions found:")
for session in found_preferred_sessions:
session_time: datetime = parse(session["start_timestamp"])
if not session_time.tzinfo:
session_time = pytz.timezone(TIMEZONE).localize(session_time)
logging.info(f"ID: {session['id_activity_calendar']}, Name: {session['name_activity']}, Time: {session_time.strftime('%Y-%m-%d %H:%M')}")
else:
logging.info("No matching preferred sessions found")
# Book preferred sessions
if not found_preferred_sessions: if not found_preferred_sessions:
logging.info("No matching sessions found to book") logging.info("No matching sessions found to book")
return return
# Book sessions (preferred first) # Book sessions (preferred first)
sessions_to_book = [(("Preferred", session) for session in found_preferred_sessions)] sessions_to_book = [("Preferred", session) for session in found_preferred_sessions]
sessions_to_book.sort(key=lambda x: 0 if x[0] == "Preferred" else 1) sessions_to_book.sort(key=lambda x: 0 if x[0] == "Preferred" else 1)
booked_sessions = []
for session_type, session in sessions_to_book: for session_type, session in sessions_to_book:
session_time: datetime = datetime.strptime(session["start_timestamp"], "%Y-%m-%d %H:%M:%S") session_time: datetime = parse(session["start_timestamp"])
logging.info(f"Attempting to book {session_type} session at {session_time} ({session['name_activity']})") logging.info(f"Attempting to book {session_type} session at {session_time} ({session['name_activity']})")
if self.book_session(session["id_activity_calendar"]): if self.book_session(session["id_activity_calendar"]):
# Send notification after successful booking # Display booked session
booked_sessions.append(session)
logging.info(f"Successfully booked {session_type} session at {session_time}")
# Notify about booked session
session_details = f"{session['name_activity']} at {session_time.strftime('%Y-%m-%d %H:%M')}" session_details = f"{session['name_activity']} at {session_time.strftime('%Y-%m-%d %H:%M')}"
await self.notifier.notify_session_booking(session_details) await self.notifier.notify_session_booking(session_details)
logging.info(f"Successfully booked {session_type} session at {session_time}")
else: else:
logging.error(f"Failed to book {session_type} session at {session_time}") logging.error(f"Failed to book {session_type} session at {session_time}")
# Send notification about the failed booking
# Notify about failed booking
session_details = f"{session['name_activity']} at {session_time.strftime('%Y-%m-%d %H:%M')}" session_details = f"{session['name_activity']} at {session_time.strftime('%Y-%m-%d %H:%M')}"
await self.notifier.notify_impossible_booking(session_details) await self.notifier.notify_impossible_booking(session_details)
logging.info(f"Notified about impossible booking for {session_type} session at {session_time}") logging.info(f"Notified about impossible booking for {session_type} session at {session_time}")
# Display all booked session(s)
if booked_sessions:
logging.info("Booked sessions:")
for session in booked_sessions:
session_time: datetime = parse(session["start_timestamp"])
if not session_time.tzinfo:
session_time = pytz.timezone(TIMEZONE).localize(session_time)
logging.info(f"ID: {session['id_activity_calendar']}, Name: {session['name_activity']}, Time: {session_time.strftime('%Y-%m-%d %H:%M')}")
else:
logging.info("No sessions were booked")
async def run(self) -> None: async def run(self) -> None:
""" """
Main execution loop. Main execution loop.