Mercurial > piecrust2
comparison piecrust/generation/base.py @ 785:661f7ba15762
bug: Fix possible crash with overlapping pages.
Code was incorrectly refactored from a previous version.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 31 Aug 2016 20:48:29 -0700 |
parents | 606f6d57b5df |
children | 58ebf50235a5 |
comparison
equal
deleted
inserted
replaced
784:6d8fe8e93a91 | 785:661f7ba15762 |
---|---|
1 import logging | |
1 from werkzeug.utils import cached_property | 2 from werkzeug.utils import cached_property |
2 from piecrust.baking.records import BakeRecordEntry | 3 from piecrust.baking.records import BakeRecordEntry |
3 from piecrust.baking.worker import save_factory, JOB_BAKE | 4 from piecrust.baking.worker import save_factory, JOB_BAKE |
4 from piecrust.configuration import ConfigurationError | 5 from piecrust.configuration import ConfigurationError |
5 from piecrust.routing import create_route_metadata | 6 from piecrust.routing import create_route_metadata |
6 from piecrust.sources.pageref import PageRef | 7 from piecrust.sources.pageref import PageRef |
8 | |
9 | |
10 logger = logging.getLogger(__name__) | |
7 | 11 |
8 | 12 |
9 class InvalidRecordExtraKey(Exception): | 13 class InvalidRecordExtraKey(Exception): |
10 pass | 14 pass |
11 | 15 |
59 uri = route.getUri(route_metadata) | 63 uri = route.getUri(route_metadata) |
60 override_entry = self._record.getOverrideEntry(page.path, uri) | 64 override_entry = self._record.getOverrideEntry(page.path, uri) |
61 if override_entry is not None: | 65 if override_entry is not None: |
62 override_source = self.app.getSource( | 66 override_source = self.app.getSource( |
63 override_entry.source_name) | 67 override_entry.source_name) |
64 if override_source.realm == fac.source.realm: | 68 if override_source.realm == page_fac.source.realm: |
65 cur_entry.errors.append( | 69 entry.errors.append( |
66 "Page '%s' maps to URL '%s' but is overriden " | 70 "Page '%s' maps to URL '%s' but is overriden " |
67 "by page '%s'." % | 71 "by page '%s'." % |
68 (fac.ref_spec, uri, override_entry.path)) | 72 (page_fac.ref_spec, uri, override_entry.path)) |
69 logger.error(cur_entry.errors[-1]) | 73 logger.error(entry.errors[-1]) |
70 cur_entry.flags |= BakeRecordEntry.FLAG_OVERRIDEN | 74 entry.flags |= BakeRecordEntry.FLAG_OVERRIDEN |
71 return | 75 return |
72 | 76 |
73 route_index = self._app.routes.index(route) | 77 route_index = self._app.routes.index(route) |
74 job = { | 78 job = { |
75 'type': JOB_BAKE, | 79 'type': JOB_BAKE, |