]> git.phdru.name Git - phdru.name/phdru.name.git/blob - news.py
News feeds in Atom 1.0 and RSS 2.0 formats.
[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 from datetime import date
14 from urlparse import urljoin
15
16 class NewsItem(object):
17    excerpt = None
18    content = None
19    categoryList = []
20
21    def __init__(self, date, title, rel_link):
22       self.date = date
23       self.title = title
24       self.rel_link = rel_link
25
26    def URL(self):
27       return urljoin("http://phd.pp.ru/", self.rel_link)
28
29    def rfc822_date(self):
30       y, m, d = self.date.split('-')
31       d = date(int(y), int(m), int(d))
32       return d.strftime("%a, %d %b %Y %H:%M:%S +0300")
33
34
35 def get_news_header(lang):
36    news_tmpl_file = open("news.tmpl-%s" % lang, 'r')
37    header = news_tmpl_file.read()
38    news_tmpl_file.close()
39
40    return header
41
42 def get_news_items(lang):
43    news_items_file = open("news_%s" % lang, 'r')
44    news_text = news_items_file.read()
45    news_items_file.close()
46
47    news_items = []
48    for line in news_text.split('\n'):
49       if not line: continue
50       date, rel_link, title = line.split(None, 2)
51       news_items.append(NewsItem(date, title, rel_link))
52
53    return news_items
54
55 def get_news(lang):
56    """Get news
57
58    @param lang: langauge
59    @type lang: a string 'en' or 'ru'
60    @return: a tuple of (lnaguge-dependent header, a list of new items)
61
62    """
63    return get_news_header(lang), get_news_items(lang)
64
65
66 def write_if_changed(filename, new_text):
67    try:
68       infile = open(filename, 'r')
69       old_text = infile.read()
70       infile.close()
71    except IOError:
72       old_text = None
73
74    if old_text <> new_text:
75       print "Writing", filename
76       outfile = open(filename, 'w')
77       outfile.write(new_text)
78       outfile.close()