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,