]> git.phdru.name Git - phdru.name/phdru.name.git/blobdiff - news.py
Generate news templates from text source files.
[phdru.name/phdru.name.git] / news.py
diff --git a/news.py b/news.py
new file mode 100644 (file)
index 0000000..7d0977c
--- /dev/null
+++ b/news.py
@@ -0,0 +1,56 @@
+"""News"""
+
+__version__ = "$Revision$"[11:-2]
+__revision__ = "$Id$"[5:-2]
+__date__ = "$Date$"[7:-2]
+__author__ = "Oleg BroytMann <phd@phd.pp.ru>"
+__copyright__ = "Copyright (C) 2006 PhiloSoft Design"
+__docformat__ = "epytext en"
+
+__all__ = ["get_news", "write_if_changed"]
+
+
+class NewsItem(object):
+   def __init__(self, date, title, rel_link):
+      self.date = date
+      self.title = title
+      self.rel_link = rel_link
+
+def get_news(lang):
+   """Get news
+
+   @param lang: langauge
+   @type lang: a string 'en' or 'ru'
+   @return: a tuple of (lnaguge-dependent header, a list of new items)
+
+   """
+   news_tmpl_file = open("news.tmpl-%s" % lang, 'r')
+   header = news_tmpl_file.read()
+   news_tmpl_file.close()
+
+   news_items_file = open("news_%s" % lang, 'r')
+   news_text = news_items_file.read()
+   news_items_file.close()
+
+   news_items = []
+   for line in news_text.split('\n'):
+      if not line: continue
+      date, rel_link, title = line.split(None, 2)
+      news_items.append(NewsItem(date, title, rel_link))
+
+   return header, news_items
+
+
+def write_if_changed(filename, new_text):
+   try:
+      infile = open(filename, 'r')
+      old_text = infile.read()
+      infile.close()
+   except IOError:
+      old_text = None
+
+   if old_text <> new_text:
+      print "Writing", filename
+      outfile = open(filename, 'w')
+      outfile.write(new_text)
+      outfile.close()