def _get_datetime_obj(self, **params): try: return datetime(**params) except ValueError as e: error_text = e.__str__() error_msgs = ['day is out of range', 'day must be in'] if ((error_msgs[0] in error_text or error_msgs[1] in error_text) and not (self._token_day or hasattr(self, '_token_weekday'))): params['day'] = get_last_day_of_month(params['year'], params['month']) return datetime(**params) else: raise e
def _get_datetime_obj(self, **params): try: return datetime(**params) except ValueError as e: error_text = e.__str__() error_msgs = ['day is out of range', 'day must be in'] if (error_msgs[0] in error_text or error_msgs[1] in error_text): if not(self._token_day or hasattr(self, '_token_weekday')): # if day is not available put last day of the month params['day'] = get_last_day_of_month(params['year'], params['month']) return datetime(**params) elif not self._token_year and params['day'] == 29 and params['month'] == 2 and \ not calendar.isleap(params['year']): # fix the year when year is not present and it is 29 of February params['year'] = self._get_correct_leap_year(self.settings.PREFER_DATES_FROM, params['year']) return datetime(**params) raise e
def test_get_last_day_of_month(self, year, month, expected_last_day): assert get_last_day_of_month(year, month) == expected_last_day