equal
deleted
inserted
replaced
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 |
12 |
13 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
14 |
14 |
15 from pyams_content.component.paragraph.interfaces.milestone import IMilestoneParagraph |
15 from pyramid.decorator import reify |
|
16 |
|
17 from pyams_content.component.paragraph.interfaces.milestone import IMilestoneParagraph, IMilestoneContainer |
16 from pyams_content.features.renderer.interfaces import IContentRenderer |
18 from pyams_content.features.renderer.interfaces import IContentRenderer |
17 from pyams_default_theme.features.renderer import BaseContentRenderer |
19 from pyams_default_theme.features.renderer import BaseContentRenderer |
18 from pyams_skin.layer import IPyAMSLayer |
20 from pyams_skin.layer import IPyAMSLayer |
19 from pyams_template.template import template_config |
21 from pyams_template.template import template_config |
20 from pyams_utils.adapter import adapter_config |
22 from pyams_utils.adapter import adapter_config |
33 |
35 |
34 label = _("Default milestones renderer") |
36 label = _("Default milestones renderer") |
35 weight = 1 |
37 weight = 1 |
36 |
38 |
37 i18n_context_attrs = ('title', 'body') |
39 i18n_context_attrs = ('title', 'body') |
|
40 |
|
41 @reify |
|
42 def milestones(self): |
|
43 return IMilestoneContainer(self.context) |
|
44 |
|
45 @property |
|
46 def has_anchors(self): |
|
47 for milestone in self.milestones.values(): |
|
48 if milestone.anchor is not None: |
|
49 return True |
|
50 return False |