Mercurial > piecrust2
annotate piecrust/sources/posts.py @ 1157:40a40305c4e1
config: Support environment variables in theme directories.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 11 Jun 2019 15:14:20 -0700 |
parents | 4cc020ff2537 |
children | 1bb70ec2cb03 |
rev | line source |
---|---|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
1 import os |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 import os.path |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 import re |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 import logging |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 import datetime |
520
bab91fcef741
bake/serve: Improve support for unicode, add slugification options.
Ludovic Chabant <ludovic@chabant.com>
parents:
516
diff
changeset
|
6 from piecrust import osutil |
792
58ebf50235a5
routing: Simplify how routes are defined.
Ludovic Chabant <ludovic@chabant.com>
parents:
577
diff
changeset
|
7 from piecrust.routing import RouteParameter |
977
84fc72a17f7a
sources: Changes in related contents management.
Ludovic Chabant <ludovic@chabant.com>
parents:
943
diff
changeset
|
8 from piecrust.sources.base import REL_PARENT_GROUP, REL_ASSETS, ContentItem |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
9 from piecrust.sources.fs import ( |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
10 FSContentSource, InvalidFileSystemEndpointError) |
576
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
11 from piecrust.sources.interfaces import ( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
12 IPreparingSource, IInteractiveSource, InteractiveField) |
853
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
13 from piecrust.sources.mixins import SimpleAssetsSubDirMixin |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
14 from piecrust.uriutil import uri_to_title |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
17 logger = logging.getLogger(__name__) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
18 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
20 class PostsSource(FSContentSource, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
21 SimpleAssetsSubDirMixin, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
22 IPreparingSource, IInteractiveSource): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 PATH_FORMAT = None |
854
08e02c2a2a1a
core: Keep refactoring, this time to prepare for generator sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
853
diff
changeset
|
24 DEFAULT_PIPELINE_NAME = 'page' |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
26 def __init__(self, app, name, config): |
853
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
27 super().__init__(app, name, config) |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
28 |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
29 config.setdefault('data_type', 'page_iterator') |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
30 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
31 self.auto_formats = app.config.get('site/auto_formats') |
11
617191dec18e
Fixes for Windows, make `findPagePath` return a ref path.
Ludovic Chabant <ludovic@chabant.com>
parents:
6
diff
changeset
|
32 self.default_auto_format = app.config.get('site/default_auto_format') |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
33 self.supported_extensions = list(self.auto_formats) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
34 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
35 @property |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
36 def path_format(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
37 return self.__class__.PATH_FORMAT |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
38 |
862
fddaf43424e2
refactor: Get the page assets to work again in the server.
Ludovic Chabant <ludovic@chabant.com>
parents:
854
diff
changeset
|
39 def _finalizeContent(self, groups): |
866
d9059257743c
refactor: Make the linker work again.
Ludovic Chabant <ludovic@chabant.com>
parents:
862
diff
changeset
|
40 SimpleAssetsSubDirMixin._removeAssetGroups(self, groups) |
862
fddaf43424e2
refactor: Get the page assets to work again in the server.
Ludovic Chabant <ludovic@chabant.com>
parents:
854
diff
changeset
|
41 |
977
84fc72a17f7a
sources: Changes in related contents management.
Ludovic Chabant <ludovic@chabant.com>
parents:
943
diff
changeset
|
42 def getRelatedContents(self, item, relationship): |
84fc72a17f7a
sources: Changes in related contents management.
Ludovic Chabant <ludovic@chabant.com>
parents:
943
diff
changeset
|
43 if relationship == REL_PARENT_GROUP: |
84fc72a17f7a
sources: Changes in related contents management.
Ludovic Chabant <ludovic@chabant.com>
parents:
943
diff
changeset
|
44 # Logically speaking, all posts are always flattened. |
84fc72a17f7a
sources: Changes in related contents management.
Ludovic Chabant <ludovic@chabant.com>
parents:
943
diff
changeset
|
45 return None |
792
58ebf50235a5
routing: Simplify how routes are defined.
Ludovic Chabant <ludovic@chabant.com>
parents:
577
diff
changeset
|
46 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
47 if relationship == REL_ASSETS: |
862
fddaf43424e2
refactor: Get the page assets to work again in the server.
Ludovic Chabant <ludovic@chabant.com>
parents:
854
diff
changeset
|
48 return SimpleAssetsSubDirMixin._getRelatedAssetsContents( |
fddaf43424e2
refactor: Get the page assets to work again in the server.
Ludovic Chabant <ludovic@chabant.com>
parents:
854
diff
changeset
|
49 self, item) |
977
84fc72a17f7a
sources: Changes in related contents management.
Ludovic Chabant <ludovic@chabant.com>
parents:
943
diff
changeset
|
50 |
862
fddaf43424e2
refactor: Get the page assets to work again in the server.
Ludovic Chabant <ludovic@chabant.com>
parents:
854
diff
changeset
|
51 return FSContentSource.getRelatedContents(self, item, relationship) |
577
ff404adfcf45
sources: Add method to get a page factory from a path.
Ludovic Chabant <ludovic@chabant.com>
parents:
576
diff
changeset
|
52 |
989
8adc27285d93
bake: Big pass on bake performance.
Ludovic Chabant <ludovic@chabant.com>
parents:
987
diff
changeset
|
53 def findContentFromSpec(self, spec): |
8adc27285d93
bake: Big pass on bake performance.
Ludovic Chabant <ludovic@chabant.com>
parents:
987
diff
changeset
|
54 metadata = self._parseMetadataFromPath(spec) |
8adc27285d93
bake: Big pass on bake performance.
Ludovic Chabant <ludovic@chabant.com>
parents:
987
diff
changeset
|
55 return ContentItem(spec, metadata) |
866
d9059257743c
refactor: Make the linker work again.
Ludovic Chabant <ludovic@chabant.com>
parents:
862
diff
changeset
|
56 |
989
8adc27285d93
bake: Big pass on bake performance.
Ludovic Chabant <ludovic@chabant.com>
parents:
987
diff
changeset
|
57 def findContentFromRoute(self, route_params): |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
58 year = route_params.get('year') |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
59 month = route_params.get('month') |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
60 day = route_params.get('day') |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
61 slug = route_params.get('slug') |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
62 |
281
0641fe5c3ef9
serve: Don't crash when a post URL doesn't match our expectations.
Ludovic Chabant <ludovic@chabant.com>
parents:
244
diff
changeset
|
63 try: |
0641fe5c3ef9
serve: Don't crash when a post URL doesn't match our expectations.
Ludovic Chabant <ludovic@chabant.com>
parents:
244
diff
changeset
|
64 if year is not None: |
0641fe5c3ef9
serve: Don't crash when a post URL doesn't match our expectations.
Ludovic Chabant <ludovic@chabant.com>
parents:
244
diff
changeset
|
65 year = int(year) |
0641fe5c3ef9
serve: Don't crash when a post URL doesn't match our expectations.
Ludovic Chabant <ludovic@chabant.com>
parents:
244
diff
changeset
|
66 if month is not None: |
0641fe5c3ef9
serve: Don't crash when a post URL doesn't match our expectations.
Ludovic Chabant <ludovic@chabant.com>
parents:
244
diff
changeset
|
67 month = int(month) |
0641fe5c3ef9
serve: Don't crash when a post URL doesn't match our expectations.
Ludovic Chabant <ludovic@chabant.com>
parents:
244
diff
changeset
|
68 if day is not None: |
0641fe5c3ef9
serve: Don't crash when a post URL doesn't match our expectations.
Ludovic Chabant <ludovic@chabant.com>
parents:
244
diff
changeset
|
69 day = int(day) |
0641fe5c3ef9
serve: Don't crash when a post URL doesn't match our expectations.
Ludovic Chabant <ludovic@chabant.com>
parents:
244
diff
changeset
|
70 except ValueError: |
363
dd25bd3ce1f9
serve: Refactoring and fixes to be able to serve taxonomy pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
281
diff
changeset
|
71 return None |
54
a46354306738
Use properly formatted date components for the blog sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
36
diff
changeset
|
72 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
73 ext = route_params.get('ext') |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
74 if ext is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
75 if len(self.supported_extensions) == 1: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
76 ext = self.supported_extensions[0] |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
77 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
78 replacements = { |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
79 'year': '%04d' % year if year is not None else None, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
80 'month': '%02d' % month if month is not None else None, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
81 'day': '%02d' % day if day is not None else None, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
82 'slug': slug, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
83 'ext': ext |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
84 } |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
85 needs_recapture = False |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
86 if year is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
87 needs_recapture = True |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
88 replacements['year'] = '????' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
89 if month is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
90 needs_recapture = True |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
91 replacements['month'] = '??' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
92 if day is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
93 needs_recapture = True |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
94 replacements['day'] = '??' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
95 if slug is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
96 needs_recapture = True |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
97 replacements['slug'] = '*' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
98 if ext is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
99 needs_recapture = True |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
100 replacements['ext'] = '*' |
11
617191dec18e
Fixes for Windows, make `findPagePath` return a ref path.
Ludovic Chabant <ludovic@chabant.com>
parents:
6
diff
changeset
|
101 path = os.path.normpath(os.path.join( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
102 self.fs_endpoint_path, self.path_format % replacements)) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
103 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
104 if needs_recapture: |
520
bab91fcef741
bake/serve: Improve support for unicode, add slugification options.
Ludovic Chabant <ludovic@chabant.com>
parents:
516
diff
changeset
|
105 possible_paths = osutil.glob(path) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
106 if len(possible_paths) != 1: |
516
73bd408caebc
internal: Return `None` instead of raising an exception when finding pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
363
diff
changeset
|
107 return None |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
108 path = possible_paths[0] |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
109 elif not os.path.isfile(path): |
516
73bd408caebc
internal: Return `None` instead of raising an exception when finding pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
363
diff
changeset
|
110 return None |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
111 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
112 metadata = self._parseMetadataFromPath(path) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
113 return ContentItem(path, metadata) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
114 |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
115 def _parseMetadataFromPath(self, path): |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
116 regex_repl = { |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
117 'year': '(?P<year>\d{4})', |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
118 'month': '(?P<month>\d{2})', |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
119 'day': '(?P<day>\d{2})', |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
120 'slug': '(?P<slug>.*)', |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
121 'ext': '(?P<ext>.*)' |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
122 } |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
123 path_format_re = re.sub(r'([\-\.])', r'\\\1', self.path_format) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
124 pattern = path_format_re % regex_repl + '$' |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
125 m = re.search(pattern, path.replace('\\', '/')) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
126 if not m: |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
127 raise Exception("Expected to be able to match path with path " |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
128 "format: %s" % path) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
129 |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
130 year = int(m.group('year')) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
131 month = int(m.group('month')) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
132 day = int(m.group('day')) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
133 timestamp = datetime.date(year, month, day) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
134 metadata = { |
854
08e02c2a2a1a
core: Keep refactoring, this time to prepare for generator sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
853
diff
changeset
|
135 'route_params': { |
08e02c2a2a1a
core: Keep refactoring, this time to prepare for generator sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
853
diff
changeset
|
136 'year': year, |
08e02c2a2a1a
core: Keep refactoring, this time to prepare for generator sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
853
diff
changeset
|
137 'month': month, |
08e02c2a2a1a
core: Keep refactoring, this time to prepare for generator sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
853
diff
changeset
|
138 'day': day, |
08e02c2a2a1a
core: Keep refactoring, this time to prepare for generator sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
853
diff
changeset
|
139 'slug': m.group('slug') |
08e02c2a2a1a
core: Keep refactoring, this time to prepare for generator sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
853
diff
changeset
|
140 }, |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
141 'date': timestamp |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
142 } |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
143 return metadata |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
144 |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
145 def getSupportedRouteParameters(self): |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
146 return [ |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
147 RouteParameter('slug', RouteParameter.TYPE_STRING), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
148 RouteParameter('day', RouteParameter.TYPE_INT2), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
149 RouteParameter('month', RouteParameter.TYPE_INT2), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
150 RouteParameter('year', RouteParameter.TYPE_INT4)] |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
151 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
152 def setupPrepareParser(self, parser, app): |
576
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
153 parser.add_argument( |
987
d57fff79acc1
prepare: Fix a crash when preparing a new post.
Ludovic Chabant <ludovic@chabant.com>
parents:
977
diff
changeset
|
154 '-d', '--date', |
d57fff79acc1
prepare: Fix a crash when preparing a new post.
Ludovic Chabant <ludovic@chabant.com>
parents:
977
diff
changeset
|
155 default='today', |
d57fff79acc1
prepare: Fix a crash when preparing a new post.
Ludovic Chabant <ludovic@chabant.com>
parents:
977
diff
changeset
|
156 help=("The date of the post, in `year/month/day` format " |
d57fff79acc1
prepare: Fix a crash when preparing a new post.
Ludovic Chabant <ludovic@chabant.com>
parents:
977
diff
changeset
|
157 "(defaults to today).")) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
158 parser.add_argument('slug', help="The URL slug for the new post.") |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
159 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
160 def createContent(self, args): |
80
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
161 dt = datetime.date.today() |
892
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
162 date = args.get('date') |
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
163 if isinstance(date, str): |
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
164 if date == 'today': |
576
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
165 pass # Keep the default we had. |
892
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
166 elif date == 'tomorrow': |
80
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
167 dt += datetime.timedelta(days=1) |
892
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
168 elif date.startswith('+'): |
80
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
169 try: |
892
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
170 dt += datetime.timedelta(days=int(date.lstrip('+'))) |
80
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
171 except ValueError: |
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
172 raise Exception("Date offsets must be numbers.") |
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
173 else: |
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
174 try: |
892
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
175 year, month, day = [int(s) for s in date.split('/')] |
80
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
176 except ValueError: |
1127
4cc020ff2537
prepare: Fix crash when preparing new pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
989
diff
changeset
|
177 raise Exception( |
4cc020ff2537
prepare: Fix crash when preparing new pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
989
diff
changeset
|
178 "Dates must be of the form 'YEAR/MONTH/DAY', " |
4cc020ff2537
prepare: Fix crash when preparing new pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
989
diff
changeset
|
179 "got '%s'." % |
4cc020ff2537
prepare: Fix crash when preparing new pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
989
diff
changeset
|
180 str(date)) |
80
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
181 dt = datetime.date(year, month, day) |
892
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
182 elif isinstance(date, datetime.datetime): |
943
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
183 dt = datetime.date(date.year, date.month, date.day) |
892
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
184 else: |
943
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
185 try: |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
186 dt = datetime.date( |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
187 int(args.get('year')), |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
188 int(args.get('month')), |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
189 int(args.get('day'))) |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
190 except ValueError: |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
191 raise Exception("Incorrect year/month/day values: %s" % |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
192 args) |
80
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
193 |
943
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
194 slug = args.get('slug') |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
195 if slug is None: |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
196 raise Exception("No slug in args: %s" % args) |
b61dd60aff36
sources: Posts source accepts more arguments for creating a post.
Ludovic Chabant <ludovic@chabant.com>
parents:
926
diff
changeset
|
197 slug, ext = os.path.splitext(slug) |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
198 if not ext: |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
199 ext = self.default_auto_format |
80
838a9dd0e23c
Better date creation for blog post scaffolding.
Ludovic Chabant <ludovic@chabant.com>
parents:
54
diff
changeset
|
200 year, month, day = dt.year, dt.month, dt.day |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
201 tokens = { |
892
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
202 'slug': args.get('slug'), |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
203 'ext': ext, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
204 'year': '%04d' % year, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
205 'month': '%02d' % month, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
206 'day': '%02d' % day |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
207 } |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
208 rel_path = self.path_format % tokens |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
209 path = os.path.join(self.fs_endpoint_path, rel_path) |
892
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
210 metadata = self._parseMetadataFromPath(path) |
c445a3d5d950
internal: Make `createContent` use a dictionary-like object.
Ludovic Chabant <ludovic@chabant.com>
parents:
866
diff
changeset
|
211 metadata['config'] = {'title': uri_to_title(slug)} |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
212 return ContentItem(path, metadata) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
213 |
576
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
214 def getInteractiveFields(self): |
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
215 dt = datetime.date.today() |
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
216 return [ |
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
217 InteractiveField('year', InteractiveField.TYPE_INT, dt.year), |
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
218 InteractiveField('month', InteractiveField.TYPE_INT, dt.month), |
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
219 InteractiveField('day', InteractiveField.TYPE_INT, dt.day), |
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
220 InteractiveField('slug', InteractiveField.TYPE_STRING, 'new-post')] |
0c74a6c4533d
sources: Add code to support "interactive" metadata acquisition.
Ludovic Chabant <ludovic@chabant.com>
parents:
520
diff
changeset
|
221 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
222 def _checkFsEndpointPath(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
223 if not os.path.isdir(self.fs_endpoint_path): |
84
b3ce11b2cf36
Don't complain about missing `pages` or `posts` directories by default.
Ludovic Chabant <ludovic@chabant.com>
parents:
80
diff
changeset
|
224 if self.ignore_missing_dir: |
b3ce11b2cf36
Don't complain about missing `pages` or `posts` directories by default.
Ludovic Chabant <ludovic@chabant.com>
parents:
80
diff
changeset
|
225 return False |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
226 raise InvalidFileSystemEndpointError(self.name, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
227 self.fs_endpoint_path) |
84
b3ce11b2cf36
Don't complain about missing `pages` or `posts` directories by default.
Ludovic Chabant <ludovic@chabant.com>
parents:
80
diff
changeset
|
228 return True |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
229 |
853
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
230 def _makeContentItem(self, rel_path, slug, year, month, day): |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
231 path = os.path.join(self.fs_endpoint_path, rel_path) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
232 timestamp = datetime.date(year, month, day) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
233 metadata = { |
853
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
234 'route_params': { |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
235 'slug': slug, |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
236 'year': year, |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
237 'month': month, |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
238 'day': day}, |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
239 'date': timestamp |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
240 } |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
241 |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
242 _, ext = os.path.splitext(path) |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
243 if ext: |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
244 fmt = self.auto_formats.get(ext.lstrip('.')) |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
245 if fmt: |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
246 metadata['config'] = {'format': fmt} |
f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
852
diff
changeset
|
247 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
248 return ContentItem(path, metadata) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
249 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
250 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
251 class FlatPostsSource(PostsSource): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
252 SOURCE_NAME = 'posts/flat' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
253 PATH_FORMAT = '%(year)s-%(month)s-%(day)s_%(slug)s.%(ext)s' |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
254 PATTERN = re.compile(r'(\d{4})-(\d{2})-(\d{2})_(.*)\.(\w+)$') |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
255 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
256 def __init__(self, app, name, config): |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
257 super().__init__(app, name, config) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
258 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
259 def getContents(self, group): |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
260 if not self._checkFSEndpoint(): |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
261 return None |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
262 |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
263 logger.debug("Scanning for posts (flat) in: %s" % |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
264 self.fs_endpoint_path) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
265 pattern = FlatPostsSource.PATTERN |
520
bab91fcef741
bake/serve: Improve support for unicode, add slugification options.
Ludovic Chabant <ludovic@chabant.com>
parents:
516
diff
changeset
|
266 _, __, filenames = next(osutil.walk(self.fs_endpoint_path)) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
267 for f in filenames: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
268 match = pattern.match(f) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
269 if match is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
270 name, ext = os.path.splitext(f) |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
271 logger.warning( |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
272 "'%s' is not formatted as 'YYYY-MM-DD_slug-title.%s' " |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
273 "and will be ignored. Is that a typo?" % (f, ext)) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
274 continue |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
275 yield self._makeContentItem( |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
276 f, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
277 match.group(4), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
278 int(match.group(1)), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
279 int(match.group(2)), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
280 int(match.group(3))) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
281 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
282 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
283 class ShallowPostsSource(PostsSource): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
284 SOURCE_NAME = 'posts/shallow' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
285 PATH_FORMAT = '%(year)s/%(month)s-%(day)s_%(slug)s.%(ext)s' |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
286 YEAR_PATTERN = re.compile(r'(\d{4})$') |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
287 FILE_PATTERN = re.compile(r'(\d{2})-(\d{2})_(.*)\.(\w+)$') |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
288 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
289 def __init__(self, app, name, config): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
290 super(ShallowPostsSource, self).__init__(app, name, config) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
291 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
292 def getContents(self, group): |
84
b3ce11b2cf36
Don't complain about missing `pages` or `posts` directories by default.
Ludovic Chabant <ludovic@chabant.com>
parents:
80
diff
changeset
|
293 if not self._checkFsEndpointPath(): |
b3ce11b2cf36
Don't complain about missing `pages` or `posts` directories by default.
Ludovic Chabant <ludovic@chabant.com>
parents:
80
diff
changeset
|
294 return |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
295 |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
296 logger.debug("Scanning for posts (shallow) in: %s" % |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
297 self.fs_endpoint_path) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
298 year_pattern = ShallowPostsSource.YEAR_PATTERN |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
299 file_pattern = ShallowPostsSource.FILE_PATTERN |
520
bab91fcef741
bake/serve: Improve support for unicode, add slugification options.
Ludovic Chabant <ludovic@chabant.com>
parents:
516
diff
changeset
|
300 _, year_dirs, __ = next(osutil.walk(self.fs_endpoint_path)) |
5 | 301 year_dirs = [d for d in year_dirs if year_pattern.match(d)] |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
302 for yd in year_dirs: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
303 if year_pattern.match(yd) is None: |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
304 logger.warning( |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
305 "'%s' is not formatted as 'YYYY' and will be ignored. " |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
306 "Is that a typo?") |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
307 continue |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
308 year = int(yd) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
309 year_dir = os.path.join(self.fs_endpoint_path, yd) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
310 |
520
bab91fcef741
bake/serve: Improve support for unicode, add slugification options.
Ludovic Chabant <ludovic@chabant.com>
parents:
516
diff
changeset
|
311 _, __, filenames = next(osutil.walk(year_dir)) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
312 for f in filenames: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
313 match = file_pattern.match(f) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
314 if match is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
315 name, ext = os.path.splitext(f) |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
316 logger.warning( |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
317 "'%s' is not formatted as 'MM-DD_slug-title.%s' " |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
318 "and will be ignored. Is that a typo?" % (f, ext)) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
319 continue |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
320 yield self._makeContentItem( |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
321 os.path.join(yd, f), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
322 match.group(3), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
323 year, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
324 int(match.group(1)), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
325 int(match.group(2))) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
326 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
327 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
328 class HierarchyPostsSource(PostsSource): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
329 SOURCE_NAME = 'posts/hierarchy' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
330 PATH_FORMAT = '%(year)s/%(month)s/%(day)s_%(slug)s.%(ext)s' |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
331 YEAR_PATTERN = re.compile(r'(\d{4})$') |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
332 MONTH_PATTERN = re.compile(r'(\d{2})$') |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
333 FILE_PATTERN = re.compile(r'(\d{2})_(.*)\.(\w+)$') |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
334 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
335 def __init__(self, app, name, config): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
336 super(HierarchyPostsSource, self).__init__(app, name, config) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
337 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
338 def getContents(self, group): |
84
b3ce11b2cf36
Don't complain about missing `pages` or `posts` directories by default.
Ludovic Chabant <ludovic@chabant.com>
parents:
80
diff
changeset
|
339 if not self._checkFsEndpointPath(): |
b3ce11b2cf36
Don't complain about missing `pages` or `posts` directories by default.
Ludovic Chabant <ludovic@chabant.com>
parents:
80
diff
changeset
|
340 return |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
341 |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
342 logger.debug("Scanning for posts (hierarchy) in: %s" % |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
343 self.fs_endpoint_path) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
344 year_pattern = HierarchyPostsSource.YEAR_PATTERN |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
345 month_pattern = HierarchyPostsSource.MONTH_PATTERN |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
346 file_pattern = HierarchyPostsSource.FILE_PATTERN |
520
bab91fcef741
bake/serve: Improve support for unicode, add slugification options.
Ludovic Chabant <ludovic@chabant.com>
parents:
516
diff
changeset
|
347 _, year_dirs, __ = next(osutil.walk(self.fs_endpoint_path)) |
5 | 348 year_dirs = [d for d in year_dirs if year_pattern.match(d)] |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
349 for yd in year_dirs: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
350 year = int(yd) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
351 year_dir = os.path.join(self.fs_endpoint_path, yd) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
352 |
520
bab91fcef741
bake/serve: Improve support for unicode, add slugification options.
Ludovic Chabant <ludovic@chabant.com>
parents:
516
diff
changeset
|
353 _, month_dirs, __ = next(osutil.walk(year_dir)) |
5 | 354 month_dirs = [d for d in month_dirs if month_pattern.match(d)] |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
355 for md in month_dirs: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
356 month = int(md) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
357 month_dir = os.path.join(year_dir, md) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
358 |
520
bab91fcef741
bake/serve: Improve support for unicode, add slugification options.
Ludovic Chabant <ludovic@chabant.com>
parents:
516
diff
changeset
|
359 _, __, filenames = next(osutil.walk(month_dir)) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
360 for f in filenames: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
361 match = file_pattern.match(f) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
362 if match is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
363 name, ext = os.path.splitext(f) |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
364 logger.warning( |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
365 "'%s' is not formatted as 'DD_slug-title.%s' " |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
366 "and will be ignored. Is that a typo?" % (f, ext)) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
367 continue |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
368 rel_name = os.path.join(yd, md, f) |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
369 yield self._makeContentItem( |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
370 rel_name, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
371 match.group(2), |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
372 year, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
373 month, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
841
diff
changeset
|
374 int(match.group(1))) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
375 |