def crea_feed_rss(base_path, outfile, title, description=''): """(list of tuple, str, str, str, str) Scrive un file rss per il sito """ moduli = elenco_per_indice() abbina_cronologia(get_cronologia(), moduli) moduli_ordinati = Modulo.ordina_per_data(moduli) local_feed = os.path.join(HTML_DIR, outfile) outfile = urlparse.urljoin(base_path, outfile) feed = Feed(title, outfile, description) for modulo in moduli_ordinati: assert isinstance(modulo, Modulo) link_guid = urlparse.urljoin(base_path, modulo.url) item = FeedItem( title=modulo.nome_per_rss, lnk=link_guid, descr=modulo.descrizione, date=datetime.datetime.combine( modulo.data_pub, datetime.datetime.min.time(), ), guid=link_guid ) feed.set_item(item) open(local_feed, mode='w').write(feed.get_feed())
def crea_pagine_indice(template_name, file_indice, mod_per_pagina, footer): """(str, str) Crea le pagine indice, che contengono i teaser per 12 moduli ognuna """ gm = [] prg = 0 ms = elenco_per_indice() moduli = sorted(ms, key=lambda x: x.nome) categ_per_indice = _categorie_per_indice(moduli) #e = sorted(moduli, key=lambda x: x.nome) pagine = ceil(len(moduli) / mod_per_pagina) for gruppo_moduli in _chunks(moduli, mod_per_pagina): for m in gruppo_moduli: gm.append(m) i = Indice(gm, footer, categ_per_indice) if ((prg + 1) < pagine): i.prev_nr_page = prg + 1 if (prg + 1 ) == 1: i.next_nr_page = int(pagine - 1) elif (prg + 1) < pagine: i.next_nr_page = prg - 1 else: i.next_nr_page = int(pagine-2) dic = {'indice': i,} fn = '%s%s.html' % (file_indice, "_" + str(prg) if prg else '') build(template_name, dic, os.path.join(HTML_DIR, fn)) prg += 1 gm = [] return
def crea_feed_rss(base_path, outfile, title, description=''): """(list of tuple, str, str, str, str) Scrive un file rss per il sito """ moduli = elenco_per_indice() abbina_cronologia(get_cronologia(), moduli) moduli_ordinati = Modulo.ordina_per_data(moduli) folder = os.path.join(builder_conf["html_dir"] if 'html_dir' in builder_conf else r'/home/robby/tmpdebug') local_feed = os.path.join(folder, outfile) outfile = urlparse.urljoin(base_path, outfile) feed = Feed(title, outfile, description) for modulo in moduli_ordinati: assert isinstance(modulo, Modulo) link_guid = urlparse.urljoin(base_path, modulo.url) item = FeedItem( title=modulo.nome_per_rss, lnk=link_guid, descr=modulo.descrizione, date=datetime.datetime.combine( modulo.data_pub, datetime.datetime.min.time(), ), guid=link_guid ) feed.set_item(item) # print(modulo.nome, modulo.descrizione) with codecs.open(local_feed, mode='w', encoding='utf-8') as fh: fh.write(feed.get_feed())
def crea_tabella_indice(template_name): """(str) Crea la pagina che contiene la tabella che riepiloga tutti i moduli `template_name` è il nome del modello per il rendering """ moduli = elenco_per_indice() #corpo = ottieni_tabella(moduli) m = DjTabelleIndici(moduli, FOOTER) fn = 'indice_alfabetico.html' dic = {'modulo': m,} build(template_name, dic, os.path.join(HTML_DIR, fn))
def get_categorie(file_categ): """ Ottiene le categorie degli articoli :param file_categ: il file da leggere :return: una tupla con il nome della categoria in ordine alfabetico """ if not os.path.exists(file_categ): moduli = sorted(elenco_per_indice(), key=lambda x: x.nome.lower()) return [(cat[0], cat[0]) for cat in _categorie_per_indice(moduli)] else: moduli = sorted([row.strip() for row in open(file_categ)]) print() return [(m, m) for m in moduli]
def crea_tabella_indice(template_name): """(str) Crea la pagina che contiene la tabella che riepiloga tutti i moduli `template_name` è il nome del modello per il rendering """ moduli = elenco_per_indice() # corpo = ottieni_tabella(moduli) m = DjTabelleIndici(moduli, FOOTER) diz_indice = m.get_indice fn = 'indice_alfabetico.html' dic = {'modulo': m, } dic['idx'] = diz_indice build(template_name, dic, os.path.join(builder_conf["html_dir"], fn))
def crea_pagine_indice(template_name, file_indice, mod_per_pagina, footer): """(str, str, int, Footer) Crea le pagine indice, che contengono i teaser per 12 moduli ognuna """ # gm = list() # prg = 0 # ms = elenco_per_indice() moduli = sorted(elenco_per_indice(), key=lambda x: x.nome.lower()) categ_per_indice = _categorie_per_indice(moduli) # last_ten = list() # Gestione sezione ultimi moduli aggiornati with open(builder_conf["translated_modules"]) as fh: last_ten = lt.lastTen_factory( [row.strip() for row in fh.readlines()] ) nr_ultimi_agg = builder_conf['show_last_updated'] last_ten = last_ten[-nr_ultimi_agg:] \ if len(last_ten) > nr_ultimi_agg else last_ten last_ten.reverse() # render_dic = dict() moduli_per_pagina = _crea_pagina_indice( moduli, builder_conf["modules_by_page"] ) # La prima pagina in realtà non ha un valore di indice quindi non potrebbe pagine = len(moduli_per_pagina)-1 for pagina, moduli in moduli_per_pagina.iteritems(): indice = Indice(moduli, footer, categ_per_indice, pagina, pagine) render_dic = {'indice': indice, } render_dic['last_ten'] = last_ten fn = '{}{}.html'.format( file_indice, '_' + str(pagina) if pagina else '' ) build(template_name, render_dic, os.path.join(builder_conf["html_dir"], fn)) return