Mercurial > piecrust2
comparison piecrust/page.py @ 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 | 563ce5dd02af |
children | 0445a2232de7 |
comparison
equal
deleted
inserted
replaced
89:e771c202583a | 90:e293f08d954e |
---|---|
73 if self._datetime is None: | 73 if self._datetime is None: |
74 if 'datetime' in self.source_metadata: | 74 if 'datetime' in self.source_metadata: |
75 self._datetime = self.source_metadata['datetime'] | 75 self._datetime = self.source_metadata['datetime'] |
76 elif 'date' in self.source_metadata: | 76 elif 'date' in self.source_metadata: |
77 page_date = self.source_metadata['date'] | 77 page_date = self.source_metadata['date'] |
78 timestr = self.config.get('time') | 78 page_time = self.config.get('time') |
79 if timestr is not None: | 79 if page_time is not None: |
80 if isinstance(page_time, str): | |
81 # Need to parse it... | |
82 try: | |
83 parsed_t = dateutil.parser.parse(page_time) | |
84 except Exception as ex: | |
85 raise ConfigurationError( | |
86 "Invalid time '%s' in page: %s" % | |
87 (page_time, self.path)) from ex | |
88 page_time = datetime.time(parsed_t.hour, | |
89 parsed_t.minute, parsed_t.second) | |
90 | |
91 elif isinstance(page_time, int): | |
92 # Total seconds... convert to a time struct. | |
93 delta = datetime.timedelta(seconds=page_time) | |
94 dummy = datetime.datetime(1970, 1, 1) | |
95 dummy += delta | |
96 page_time = dummy.time() | |
97 | |
80 try: | 98 try: |
81 time_dt = dateutil.parser.parse(timestr) | 99 self._datetime = datetime.datetime.combine( |
82 except Exception as e: | 100 page_date, page_time) |
101 except Exception as ex: | |
83 raise ConfigurationError( | 102 raise ConfigurationError( |
84 "Invalid time '%s' in page: %s" % | 103 "Invalid page time '%s' for: %s" % ( |
85 (timestr, self.path), e) | 104 page_time, self.path)) from ex |
86 page_time = datetime.time(time_dt.hour, time_dt.minute, time_dt.second) | |
87 else: | 105 else: |
88 page_time = datetime.time(0, 0, 0) | 106 self._datetime = datetime.datetime( |
89 self._datetime = datetime.datetime.combine(page_date, page_time) | 107 page_date.year, page_date.month, page_date.day) |
90 else: | 108 else: |
91 self._datetime = datetime.datetime.fromtimestamp(self.path_mtime) | 109 self._datetime = datetime.datetime.fromtimestamp( |
110 self.path_mtime) | |
111 if self._datetime is None: | |
112 raise Exception("Got null datetime from path! %s" % self.path) | |
92 return self._datetime | 113 return self._datetime |
93 | 114 |
94 @datetime.setter | 115 @datetime.setter |
95 def datetime(self, value): | 116 def datetime(self, value): |
96 self._datetime = value | 117 self._datetime = value |