]> git.phdru.name Git - phdru.name/phdru.name.git/blob - news.py
gen-sitemap: fix a bug: args.exclude can be None
[phdru.name/phdru.name.git] / news.py
1 """News"""
2
3 __author__ = "Oleg Broytman <phd@phdru.name>"
4 __copyright__ = "Copyright (C) 2006-2012 PhiloSoft Design"
5 __docformat__ = "epytext en"
6
7 __all__ = ["get_news", "write_if_changed"]
8
9
10 from datetime import date
11 from urlparse import urljoin
12
13 class NewsItem(object):
14    baseURL = "http://phdru.name/"
15    excerpt = None
16    content = None
17    categoryList = []
18
19    def __init__(self, date, title, rel_link):
20       self.date = date
21       self.title = title
22       self.rel_link = rel_link
23
24    def URL(self):
25       return urljoin(self.baseURL, self.rel_link)
26
27    def rfc822_date(self):
28       y, m, d = self.date.split('-')
29       d = date(int(y), int(m), int(d))
30       return d.strftime("%a, %d %b %Y %H:%M:%S +0300")
31
32
33 def get_news_header(lang):
34    news_tmpl_file = open("news.tmpl-%s" % lang, 'r')
35    header = news_tmpl_file.read()
36    news_tmpl_file.close()
37
38    return header
39
40 def get_news_items(lang):
41    news_items_file = open("news_%s" % lang, 'r')
42    news_text = news_items_file.read()
43    news_items_file.close()
44
45    news_items = []
46    for line in news_text.split('\n'):
47       if not line: continue
48       date, rel_link, title = line.split(None, 2)
49       news_items.append(NewsItem(date, title, rel_link))
50
51    return news_items
52
53 def get_news(lang):
54    """Get news
55
56    @param lang: langauge
57    @type lang: a string 'en' or 'ru'
58    @return: a tuple of (lnaguge-dependent header, a list of new items)
59
60    """
61    return get_news_header(lang), get_news_items(lang)
62
63
64 def write_if_changed(filename, new_text):
65    try:
66       infile = open(filename, 'r')
67       old_text = infile.read()
68       infile.close()
69    except IOError:
70       old_text = None
71
72    if old_text <> new_text:
73       print "Writing", filename
74       outfile = open(filename, 'w')
75       outfile.write(new_text)
76       outfile.close()