Mercurial > piecrust2
comparison piecrust/sources/interfaces.py @ 852:4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
* Everything is a `ContentSource`, including assets directories.
* Most content sources are subclasses of the base file-system source.
* A source is processed by a "pipeline", and there are 2 built-in pipelines,
one for assets and one for pages. The asset pipeline is vaguely functional,
but the page pipeline is completely broken right now.
* Rewrite the baking process as just running appropriate pipelines on each
content item. This should allow for better parallelization.
| author | Ludovic Chabant <ludovic@chabant.com> |
|---|---|
| date | Wed, 17 May 2017 00:11:48 -0700 |
| parents | 0c74a6c4533d |
| children | f070a4fc033c |
comparison
equal
deleted
inserted
replaced
| 851:2c7e57d80bba | 852:4850f8c21b6e |
|---|---|
| 14 raise NotImplementedError() | 14 raise NotImplementedError() |
| 15 | 15 |
| 16 def getTailIterator(self, it): | 16 def getTailIterator(self, it): |
| 17 raise NotImplementedError() | 17 raise NotImplementedError() |
| 18 | 18 |
| 19 def getPaginationFilter(self, page): | |
| 20 raise NotImplementedError() | |
| 21 | |
| 22 def getSettingAccessor(self): | 19 def getSettingAccessor(self): |
| 23 raise NotImplementedError() | |
| 24 | |
| 25 | |
| 26 class IListableSource(object): | |
| 27 """ Defines the interface for a source that can be iterated on in a | |
| 28 hierarchical manner, for use with the `family` data endpoint. | |
| 29 """ | |
| 30 def listPath(self, rel_path): | |
| 31 raise NotImplementedError() | |
| 32 | |
| 33 def getDirpath(self, rel_path): | |
| 34 raise NotImplementedError() | |
| 35 | |
| 36 def getBasename(self, rel_path): | |
| 37 raise NotImplementedError() | 20 raise NotImplementedError() |
| 38 | 21 |
| 39 | 22 |
| 40 class IPreparingSource(object): | 23 class IPreparingSource(object): |
| 41 """ Defines the interface for a source whose pages can be created by the | 24 """ Defines the interface for a source whose pages can be created by the |
| 42 `chef prepare` command. | 25 `chef prepare` command. |
| 43 """ | 26 """ |
| 44 def setupPrepareParser(self, parser, app): | 27 def setupPrepareParser(self, parser, app): |
| 45 raise NotImplementedError() | 28 raise NotImplementedError() |
| 46 | 29 |
| 47 def buildMetadata(self, args): | 30 def createContent(self, args): |
| 48 raise NotImplementedError() | 31 raise NotImplementedError() |
| 49 | 32 |
| 50 | 33 |
| 51 class InteractiveField(object): | 34 class InteractiveField(object): |
| 35 """ A field to display in the administration web UI. | |
| 36 """ | |
| 52 TYPE_STRING = 0 | 37 TYPE_STRING = 0 |
| 53 TYPE_INT = 1 | 38 TYPE_INT = 1 |
| 54 | 39 |
| 55 def __init__(self, name, field_type, default_value): | 40 def __init__(self, name, field_type, default_value): |
| 56 self.name = name | 41 self.name = name |
| 57 self.field_type = field_type | 42 self.field_type = field_type |
| 58 self.default_value = default_value | 43 self.default_value = default_value |
| 59 | 44 |
| 60 | 45 |
| 61 class IInteractiveSource(object): | 46 class IInteractiveSource(object): |
| 47 """ A content source that a user can interact with in the administration | |
| 48 web UI. | |
| 49 """ | |
| 62 def getInteractiveFields(self): | 50 def getInteractiveFields(self): |
| 63 raise NotImplementedError() | 51 raise NotImplementedError() |
| 64 | 52 |
