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