"""Datetime related utility functions.""" import datetime from processing_accounting.flows.custom_export import setting def formatted_str_to_datetime(formatted_datetime): """Convert formatted str datetime to datetime object. Args: formatted_datetime (str): Custom export formatted datetime string, expected formatting: '%Y-%m-%d %H:%M:%S' e.g '2018-03-22 16:42:52' Returns: datetime.datetime: Resulting datetime object """ str_date, str_time = formatted_datetime.split(' ') datetime_args = map(int, str_date.split( '-') + str_time.split(':')) datetime_arg_namees = [ 'year', 'month', 'day', 'hour', 'minute', 'second'] datetime_obj = datetime.datetime( **dict(zip(datetime_arg_namees, datetime_args))) return datetime_obj def is_expired_workflow(download_start): """Check if custom export workflow is expired. Args: download_start (datetime.datetime): Starting time of AVRO file downloading time. Returns: bool: True if workflow has expired, False otherwise """ dt = datetime.timedelta(hours=setting.WORKFLOW_EXPIRATION_TIME) now = datetime.datetime.utcnow() return download_start + dt <= now