"""News""" from __future__ import print_function __author__ = "Oleg Broytman " __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): 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 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 get_news_header(lang): news_tmpl_file = open("news.tmpl-%s" % lang, 'r') header = news_tmpl_file.read() news_tmpl_file.close() 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 = [] 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()