"""News"""
-__version__ = "$Revision$"[11:-2]
-__revision__ = "$Id$"[5:-2]
-__date__ = "$Date$"[7:-2]
-__author__ = "Oleg Broytman <phd@phd.pp.ru>"
-__copyright__ = "Copyright (C) 2006-2009 PhiloSoft Design"
+from __future__ import print_function
+
+__author__ = "Oleg Broytman <phd@phdru.name>"
+__copyright__ = "Copyright (C) 2006-2024 PhiloSoft Design"
__docformat__ = "epytext en"
__all__ = ["get_news", "write_if_changed"]
from datetime import date
-from urlparse import urljoin
+from urllib.parse import urljoin
+
+std_open = open
+def open(fname, mode):
+ return std_open(fname, mode, encoding='koi8-r')
+
class NewsItem(object):
- baseURL = "http://phd.pp.ru/"
- excerpt = None
- content = None
- categoryList = []
+ baseURL = "https://phdru.name/"
+ excerpt = None
+ content = None
+ categoryList = []
- def __init__(self, date, title, rel_link):
- self.date = date
- self.title = title
- self.rel_link = rel_link
+ 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 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")
+ 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")
def get_news_header(lang):
- news_tmpl_file = open("news.tmpl-%s" % lang, 'r')
- header = news_tmpl_file.read()
- news_tmpl_file.close()
+ news_tmpl_file = open("news.tmpl-%s" % lang, 'r')
+ header = news_tmpl_file.read()
+ news_tmpl_file.close()
+
+ return header
- return header
def get_news_items(lang):
- news_items_file = open("news_%s" % lang, 'r')
- news_text = news_items_file.read()
- news_items_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))
- 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
- return news_items
def get_news(lang):
- """Get news
+ """Get news
- @param lang: langauge
- @type lang: a string 'en' or 'ru'
- @return: a tuple of (lnaguge-dependent header, a list of new items)
+ @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)
+ """
+ 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()