summaryrefslogtreecommitdiffstats
path: root/web/macros.py
blob: eaaf7d97060cdc0fdb9f32218535aa5b532bb7a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import email.utils
import os.path
import time

plugins_release = '1.5'
mib_release = '1.0.1'
page = {
    "description": "Standard plugins for Nagios and compatible monitoring solutions.",
    "keywords": "Nagios, Icinga, Shinken, Monitoring, Official, Plugins, Open, Source, Free, Software"
}
release_notes = 'doc/release-notes/' + plugins_release.replace('.', '-') + '.html'

_RSS = """<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>%s</title>
    <link>%s</link>
    <description>%s</description>
    <language>en-us</language>
    <webMaster>webmaster@nagios-plugins.org</webMaster>
    <pubDate>%s</pubDate>
    <lastBuildDate>%s</lastBuildDate>
    <generator>Poole</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    %s
  </channel>
</rss>
"""

_RSS_ITEM = """
    <item>
      <title>%s</title>
      <link>%s</link>
      <description>%s</description>
      <guid>%s</guid>
      <pubDate>%s</pubDate>
    </item>
"""

def hook_postconvert_rss():
    items = []
    posts = [p for p in pages if 'post' in p]
    posts.sort(key=lambda p: p.date, reverse=True)
    for p in posts:
        title = p.post
        link = '%s/%s' % (options.base_url.rstrip('/'), p.url)
        desc = hx(p.html)
        date = time.mktime(time.strptime('%s 12' % p.date, '%Y-%m-%d %H'))
        date = email.utils.formatdate(date)
        items.append(_RSS_ITEM % (title, link, desc, date, link))
    items = ''.join(items)
    title = 'Nagios Plugins'
    link = '%s/news/index.html' % options.base_url.rstrip('/')
    desc = 'Announcements published by the Nagios Plugins Development Team.'
    date = email.utils.formatdate()
    rss = _RSS % (title, link, desc, date, date, items)
    fp = open(os.path.join(output, 'rss.xml'), 'w')
    fp.write(rss)
    fp.close()

def list_posts(max_posts=-1):
    posts = [p for p in pages if 'post' in p]
    posts.sort(key=lambda p: p.date, reverse=True)
    if max_posts == -1:
        max_posts = len(posts)
    for p in posts[:max_posts]:
        date = time.strftime('%B %d, %Y', time.strptime(p['date'], '%Y-%m-%d'))
        print '* **[%s](%s)** (%s)' % (p.post, p.url, date)

def list_kids():
    kids = [(p.url, p.title) for p in pages if p.get('parent') == page.title]
    for kid in sorted(kids):
        print('* [%s](%s)' % (kid[1], kid[0]))

def menu():
    menu_pages = [p for p in pages if 'menu-position' in p]
    menu_pages.sort(key=lambda p: int(p['menu-position']))
    for p in menu_pages:
        if p.title == page.title:
            print('<span id="current">%s</span>' % hx(p.title))
        else:
            print('<span><a href="%s">%s</a></span>' % (p.url, hx(p.title)))

def breadcrumb():
    stable = '<span id="release">Stable release: <a href="%s">%s</a></span>' \
           % (release_notes, plugins_release)
    parents = {p.title: (p.url, p.get('parent')) for p in pages}
    title = page.title
    crumbs = hx(title)
    while parents[title][1] is not None:
        title = parents[title][1]
        url = parents[title][0]
        crumbs = '<a href="%s">%s</a> &raquo; %s' % (url, hx(title), crumbs)
    if crumbs == hx(page.title):
        crumbs = '&nbsp;' + stable
    return crumbs

def copyright_years(since=None):
    this_year = time.gmtime().tm_year
    if since is not None and int(since) != this_year:
        return str(since) + '&ndash;' + str(this_year)
    else:
        return str(this_year)

# vim:set expandtab softtabstop=4 shiftwidth=4 textwidth=80: