]> git.phdru.name Git - phdru.name/phdru.name.git/blobdiff - news.py
Fix(phd.py): Change URL for Lurk
[phdru.name/phdru.name.git] / news.py
diff --git a/news.py b/news.py
index 7d0977c9cba939f66ae25e8ec103b396907d8a8d..4f62778fc81f248f1a923d72402ecbd2bfe2dd73 100644 (file)
--- a/news.py
+++ b/news.py
@@ -1,56 +1,88 @@
 """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"
+from __future__ import print_function
+
+__author__ = "Oleg Broytman <phd@phdru.name>"
+__copyright__ = "Copyright (C) 2006-2017 PhiloSoft Design"
 __docformat__ = "epytext en"
 
 __all__ = ["get_news", "write_if_changed"]
 
 
+from datetime import date
+try:
+    from urlparse import urljoin
+except ImportError:
+    from urllib.parse import urljoin
+
+try:
+    unicode
+except NameError:  # PY3
+    std_open = open
+    def open(fname, mode):
+        return std_open(fname, mode, encoding='koi8-r')
+
 class NewsItem(object):
-   def __init__(self, date, title, rel_link):
-      self.date = date
-      self.title = title
-      self.rel_link = rel_link
+    baseURL = "https://phdru.name/"
+    excerpt = None
+    content = None
+    categoryList = []
 
-def get_news(lang):
-   """Get news
+    def __init__(self, date, title, rel_link):
+        self.date = date
+        self.title = title
+        self.rel_link = rel_link
+
+    def URL(self):
+        return urljoin(self.baseURL, self.rel_link)
+
+    def rfc822_date(self):
+        y, m, d = self.date.split('-')
+        d = date(int(y), int(m), int(d))
+        return d.strftime("%a, %d %b %Y %H:%M:%S +0300")
 
-   @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()
+def get_news_header(lang):
+    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()
+    return header
 
-   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))
+def get_news_items(lang):
+    news_items_file = open("news_%s" % lang, 'r')
+    news_text = news_items_file.read()
+    news_items_file.close()
 
-   return header, news_items
+    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 news_items
+
+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)
+
+    """
+    return get_news_header(lang), get_news_items(lang)
 
 
 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()
+    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()