from datetime import date, datetime from dateutil.relativedelta import relativedelta from typing import Any, Dict, List, Union from server.utils.error_handlers import change_errors_to_none def get_min_added_date(recent_adds: bool) -> Union[date, None]: """Transform apollo bool recent_adds_only value to delphi`s min_added_date param""" result = None if recent_adds: result = date.today() - relativedelta(days=6) return result def get_item_is_recent( track_in_playlist_item: Dict[str, Any], track_in_playlist_date_key: str, date_to_compare: date ) -> bool: """Check if track in playlist items is recently added or removed based Args: track_in_playlist_item: track_in_playlist_date_key: date_to_compare: """ return datetime.fromisoformat(track_in_playlist_item[track_in_playlist_date_key]).date() >= date_to_compare @change_errors_to_none() def get_max_dsp_sync_date_time(dates_items: List[str], as_string: bool = True) -> Union[datetime, str]: result = max([datetime.fromisoformat(d[:19]) for d in dates_items if d is not None]) return result.date().isoformat() if as_string else result