예제 #1
0
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())
예제 #2
0
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
예제 #3
0
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())
예제 #4
0
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))
예제 #5
0
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]
예제 #6
0
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))
예제 #7
0
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