X-Git-Url: https://git.phdru.name/?p=phdru.name%2Fphdru.name.git;a=blobdiff_plain;f=news.py;h=4f62778fc81f248f1a923d72402ecbd2bfe2dd73;hp=7d0977c9cba939f66ae25e8ec103b396907d8a8d;hb=HEAD;hpb=30c30ad32bd724dd3026cd8c19d2abe033e85dfa diff --git a/news.py b/news.py index 7d0977c..4f62778 100644 --- 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 " -__copyright__ = "Copyright (C) 2006 PhiloSoft Design" +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): - 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()