Mercurial > piecrust2
changeset 90:e293f08d954e
PyYAML supports sexagesimal notation, so handle that for page times.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 05 Sep 2014 00:40:45 -0700 |
parents | e771c202583a |
children | e88e330eb8dc |
files | piecrust/page.py |
diffstat | 1 files changed, 31 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/page.py Thu Sep 04 08:13:39 2014 -0700 +++ b/piecrust/page.py Fri Sep 05 00:40:45 2014 -0700 @@ -75,20 +75,41 @@ self._datetime = self.source_metadata['datetime'] elif 'date' in self.source_metadata: page_date = self.source_metadata['date'] - timestr = self.config.get('time') - if timestr is not None: + page_time = self.config.get('time') + if page_time is not None: + if isinstance(page_time, str): + # Need to parse it... + try: + parsed_t = dateutil.parser.parse(page_time) + except Exception as ex: + raise ConfigurationError( + "Invalid time '%s' in page: %s" % + (page_time, self.path)) from ex + page_time = datetime.time(parsed_t.hour, + parsed_t.minute, parsed_t.second) + + elif isinstance(page_time, int): + # Total seconds... convert to a time struct. + delta = datetime.timedelta(seconds=page_time) + dummy = datetime.datetime(1970, 1, 1) + dummy += delta + page_time = dummy.time() + try: - time_dt = dateutil.parser.parse(timestr) - except Exception as e: + self._datetime = datetime.datetime.combine( + page_date, page_time) + except Exception as ex: raise ConfigurationError( - "Invalid time '%s' in page: %s" % - (timestr, self.path), e) - page_time = datetime.time(time_dt.hour, time_dt.minute, time_dt.second) + "Invalid page time '%s' for: %s" % ( + page_time, self.path)) from ex else: - page_time = datetime.time(0, 0, 0) - self._datetime = datetime.datetime.combine(page_date, page_time) + self._datetime = datetime.datetime( + page_date.year, page_date.month, page_date.day) else: - self._datetime = datetime.datetime.fromtimestamp(self.path_mtime) + self._datetime = datetime.datetime.fromtimestamp( + self.path_mtime) + if self._datetime is None: + raise Exception("Got null datetime from path! %s" % self.path) return self._datetime @datetime.setter