]> git.phdru.name Git - phdru.name/phdru.name.git/blob - news.py
Split get_news() into get_news_header() and get_news_items().
[phdru.name/phdru.name.git] / news.py
1 """News"""
2
3 __version__ = "$Revision$"[11:-2]
4 __revision__ = "$Id$"[5:-2]
5 __date__ = "$Date$"[7:-2]
6 __author__ = "Oleg BroytMann <phd@phd.pp.ru>"
7 __copyright__ = "Copyright (C) 2006 PhiloSoft Design"
8 __docformat__ = "epytext en"
9
10 __all__ = ["get_news", "write_if_changed"]
11
12
13 class NewsItem(object):
14    def __init__(self, date, title, rel_link):
15       self.date = date
16       self.title = title
17       self.rel_link = rel_link
18
19 def get_news_header(lang):
20    news_tmpl_file = open("news.tmpl-%s" % lang, 'r')
21    header = news_tmpl_file.read()
22    news_tmpl_file.close()
23
24    return header
25
26 def get_news_items(lang):
27    news_items_file = open("news_%s" % lang, 'r')
28    news_text = news_items_file.read()
29    news_items_file.close()
30
31    news_items = []
32    for line in news_text.split('\n'):
33       if not line: continue
34       date, rel_link, title = line.split(None, 2)
35       news_items.append(NewsItem(date, title, rel_link))
36
37    return news_items
38
39 def get_news(lang):
40    """Get news
41
42    @param lang: langauge
43    @type lang: a string 'en' or 'ru'
44    @return: a tuple of (lnaguge-dependent header, a list of new items)
45
46    """
47    return get_news_header(), get_news_items()
48
49
50 def write_if_changed(filename, new_text):
51    try:
52       infile = open(filename, 'r')
53       old_text = infile.read()
54       infile.close()
55    except IOError:
56       old_text = None
57
58    if old_text <> new_text:
59       print "Writing", filename
60       outfile = open(filename, 'w')
61       outfile.write(new_text)
62       outfile.close()