from datetime import date from flask import Flask, render_template from markdown2 import markdown_path from os import walk from os.path import join app = Flask(__name__) md_path = '/var/www/aurore/markdown' @app.route('/') def home(): """ Route principale du site. Pour le dynamisme du site, le changement de page est fait en javascript du cote client. Il s'agit donc de la seule route du site. Il faut cependant charger les evenements sur la page car il s'agit du seul element dynamique du site. On vient donc chercher les fichiers Markdown correspondant aux evenements et on les fournits a 'render_template' qui va generer la page finale. :return: La page 'index.html' avec les events """ mds = load_markdown_files() return render_template('index.html', mds=mds) def del_links(html): """ Supprime les balises de liens () dans le code HTML. La fonction parcours l'ensemble du code caractere par caractere. Il commence par rechercher le debut de la balise ouvrante (''). S'il a trouve une balise ouvrante il cherche alors une balise fermante (''). Tout le texte du texte HTML reste intact mis a part la balise ouvrante et la balise fermante qui sont supprimees. :param html: Code HTML ou les balises doivent etre supprimees. :return: Le code HTML initial mais sans balises de liens """ new_html = "" i = 0 opened = False while i < len(html) - 4: # La recherche de la balise fermante ne doit pas entrainer une erreur if html[i:i + 3] == "": # Fin de la balise ouvrante i += j + 1 break opened = True elif html[i:i + 4] == "" and opened: # Balise fermante i += 4 opened = False else: new_html += html[i] i += 1 return new_html def load_markdown_files(): """ Charge les fichiers markdown correspondant aux evenements. La fonction parcour l'ensemble des fichiers dans le dossier 'md_path'. Elle commence par verifier que l'extention est correcte puis qu'il y a bien le bon nombre d'elements dans le nom du fichier (jour_mois_annee_titre.md). Elle va alors recuperer la date, le titre, l'article et generer une description a partir de ce dernier. :return: Liste de tuple contenant les informations necessaires des fichiers markdowns sous la forme : (date, titre, description, article) """ mds = [] for r, d, f in walk(md_path): for file in f: if file[-3:] == '.md': # Il s'agit d'un fichier markdown split = file.split('_') if len(split) == 4: # Son nom a le bon format : jour_mois_annee_titre.md day, month, year, title = split title = title[:-3] # Retrait de l'extension event_date = date(int(year), int(month), int(day)) article = markdown_path(join(md_path, file)) description = del_links(article) mds.append((event_date, title, description, article)) return mds if __name__ == '__main__': app.run()