Skip to content

Commit 22f271b

Browse files
authored
Merge pull request #1782 from conda-forge/ann
REF make announcements nicer with more links
2 parents 1a4826f + dc82526 commit 22f271b

File tree

2 files changed

+432
-476
lines changed

2 files changed

+432
-476
lines changed

newsfeed/sphinxcontrib/newsfeed.py

Lines changed: 71 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -66,40 +66,77 @@ def process_feed(app, doctree, fromdocname):
6666
rss_items = []
6767
for docname in node['entries']:
6868
entry = env.get_doctree(docname)
69-
70-
for field in entry.traverse(nodes.field):
71-
field_date = [f for f in field.traverse(nodes.field_name)][0]
72-
pars = []
73-
for b in field.traverse(nodes.field_body):
74-
for p in b.traverse(nodes.paragraph):
75-
pars.append(p)
76-
77-
rss_item_description = nodes.compound()
78-
for p in pars[1:]:
79-
rss_item_description += p.deepcopy()
80-
81-
document += rss_item_description
82-
app.env.resolve_references(
83-
document,
84-
node['link'],
85-
app.builder,
86-
)
87-
document.remove(rss_item_description)
88-
89-
if app.builder.format == 'html':
90-
rss_item_description = "\n".join(
91-
app.builder.render_partial(p)['body']
92-
for p in rss_item_description
93-
)
94-
rss_item_date = dateutil.parser.parse(field_date.astext().strip())
95-
rss_item_title = "%s: %s" % (field_date.astext(), pars[0].astext())
96-
rss_item = RSSItem(
97-
rss_item_title,
98-
node['link'],
99-
rss_item_description,
100-
rss_item_date,
101-
)
102-
rss_items.append(rss_item)
69+
title = entry.next_node(nodes.section)
70+
first_year = title.next_node(nodes.section)
71+
72+
for year in first_year.traverse(
73+
nodes.section, descend=False, siblings=True
74+
):
75+
first_subsection = year.next_node(nodes.section)
76+
for subsection in first_subsection.traverse(
77+
nodes.section, descend=False, siblings=True
78+
):
79+
if app.builder.format == 'html':
80+
# date
81+
date = subsection.next_node(nodes.title).astext().split(":")[0]
82+
rss_item_date = dateutil.parser.parse(date.strip())
83+
84+
# link
85+
rss_item_link = node["link"] + "#" + subsection['ids'][0]
86+
87+
# title
88+
title = subsection.next_node(nodes.title)
89+
90+
document += title
91+
app.env.resolve_references(
92+
document,
93+
node['link'],
94+
app.builder,
95+
)
96+
document.remove(title)
97+
98+
rss_item_title = title.astext()
99+
100+
# description
101+
pars = []
102+
for b in subsection.traverse(nodes.paragraph):
103+
for p in b.traverse(nodes.paragraph):
104+
pars.append(p)
105+
106+
rss_item_description = nodes.compound()
107+
for p in pars:
108+
rss_item_description += p.deepcopy()
109+
110+
document += rss_item_description
111+
app.env.resolve_references(
112+
document,
113+
node['link'],
114+
app.builder,
115+
)
116+
document.remove(rss_item_description)
117+
118+
rss_item_description = "\n".join(
119+
app.builder.render_partial(p)['body']
120+
for p in rss_item_description
121+
)
122+
if True:
123+
print("--------------------------------------------")
124+
print("--------------------------------------------")
125+
print("--------------------------------------------")
126+
print("newsfeed item:")
127+
print(" title:", rss_item_title)
128+
print(" date:", rss_item_date)
129+
print(" link:", rss_item_link)
130+
print(" desc:", rss_item_description)
131+
print(" ", flush=True)
132+
133+
rss_item = RSSItem(
134+
rss_item_title,
135+
rss_item_link,
136+
rss_item_description,
137+
rss_item_date,
138+
)
139+
rss_items.append(rss_item)
103140

104141
node.replace_self([])
105142

0 commit comments

Comments
 (0)