]> git.phdru.name Git - phdru.name/phdru.name.git/blob - news.py
Generate news templates from text source files.
[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(lang):
20    """Get news
21
22    @param lang: langauge
23    @type lang: a string 'en' or 'ru'
24    @return: a tuple of (lnaguge-dependent header, a list of new items)
25
26    """
27    news_tmpl_file = open("news.tmpl-%s" % lang, 'r')
28    header = news_tmpl_file.read()
29    news_tmpl_file.close()
30
31    news_items_file = open("news_%s" % lang, 'r')
32    news_text = news_items_file.read()
33    news_items_file.close()
34
35    news_items = []
36    for line in news_text.split('\n'):
37       if not line: continue
38       date, rel_link, title = line.split(None, 2)
39       news_items.append(NewsItem(date, title, rel_link))
40
41    return header, news_items
42
43
44 def write_if_changed(filename, new_text):
45    try:
46       infile = open(filename, 'r')
47       old_text = infile.read()
48       infile.close()
49    except IOError:
50       old_text = None
51
52    if old_text <> new_text:
53       print "Writing", filename
54       outfile = open(filename, 'w')
55       outfile.write(new_text)
56       outfile.close()