Mercurial > piecrust2
comparison piecrust/sources/base.py @ 853:f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
The asset pipeline is still the only function pipeline at this point.
* No more `QualifiedPage`, and several other pieces of code deleted.
* Data providers are simpler and more focused. For instance, the page iterator
doesn't try to support other types of items.
* Route parameters are proper known source metadata to remove the confusion
between the two.
* Make the baker and pipeline more correctly manage records and record
histories.
* Add support for record collapsing and deleting stale outputs in the asset
pipeline.
| author | Ludovic Chabant <ludovic@chabant.com> |
|---|---|
| date | Sun, 21 May 2017 00:06:59 -0700 |
| parents | 4850f8c21b6e |
| children | 08e02c2a2a1a |
comparison
equal
deleted
inserted
replaced
| 852:4850f8c21b6e | 853:f070a4fc033c |
|---|---|
| 1 import logging | 1 import logging |
| 2 import collections | 2 import collections |
| 3 from werkzeug.utils import cached_property | |
| 3 | 4 |
| 4 | 5 |
| 5 # Source realms, to differentiate sources in the site itself ('User') | 6 # Source realms, to differentiate sources in the site itself ('User') |
| 6 # and sources in the site's theme ('Theme'). | 7 # and sources in the site's theme ('Theme'). |
| 7 REALM_USER = 0 | 8 REALM_USER = 0 |
| 38 CONTENT_TYPE_ASSET = 1 | 39 CONTENT_TYPE_ASSET = 1 |
| 39 | 40 |
| 40 | 41 |
| 41 class ContentItem: | 42 class ContentItem: |
| 42 """ Describes a piece of content. | 43 """ Describes a piece of content. |
| 44 | |
| 45 Some known metadata that PieCrust will use include: | |
| 46 - `route_params`: A dictionary of route parameters to generate | |
| 47 the URL to the content. | |
| 48 - `config`: A dictionary of configuration settings to merge | |
| 49 into the settings found in the content itself. | |
| 43 """ | 50 """ |
| 44 def __init__(self, spec, metadata): | 51 def __init__(self, spec, metadata): |
| 45 self.spec = spec | 52 self.spec = spec |
| 46 self.metadata = metadata | 53 self.metadata = metadata |
| 47 | 54 |
| 78 def root_dir(self): | 85 def root_dir(self): |
| 79 if self.is_theme_source: | 86 if self.is_theme_source: |
| 80 return self.app.theme_dir | 87 return self.app.theme_dir |
| 81 return self.app.root_dir | 88 return self.app.root_dir |
| 82 | 89 |
| 83 def openItem(self, item, mode='r'): | 90 @cached_property |
| 91 def route(self): | |
| 92 return self.app.getSourceRoute(self.name) | |
| 93 | |
| 94 def openItem(self, item, mode='r', **kwargs): | |
| 84 raise NotImplementedError() | 95 raise NotImplementedError() |
| 85 | 96 |
| 86 def getItemMtime(self, item): | 97 def getItemMtime(self, item): |
| 87 raise NotImplementedError() | 98 raise NotImplementedError() |
| 88 | 99 |
