3 __version__ = "$Revision$"[11:-2]
4 __revision__ = "$Id$"[5:-2]
5 __date__ = "$Date$"[7:-2]
6 __author__ = "Oleg Broytman <phd@phd.pp.ru>"
7 __copyright__ = "Copyright (C) 2006-2009 PhiloSoft Design"
8 __docformat__ = "epytext en"
10 __all__ = ["get_news", "write_if_changed"]
13 from datetime import date
14 from urlparse import urljoin
16 class NewsItem(object):
17 baseURL = "http://phd.pp.ru/"
22 def __init__(self, date, title, rel_link):
25 self.rel_link = rel_link
28 return urljoin(self.baseURL, self.rel_link)
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")
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()
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()
49 for line in news_text.split('\n'):
51 date, rel_link, title = line.split(None, 2)
52 news_items.append(NewsItem(date, title, rel_link))
60 @type lang: a string 'en' or 'ru'
61 @return: a tuple of (lnaguge-dependent header, a list of new items)
64 return get_news_header(lang), get_news_items(lang)
67 def write_if_changed(filename, new_text):
69 infile = open(filename, 'r')
70 old_text = infile.read()
75 if old_text <> new_text:
76 print "Writing", filename
77 outfile = open(filename, 'w')
78 outfile.write(new_text)