diff --git a/aurore.py b/aurore.py index 9a6790c..ffb5244 100644 --- a/aurore.py +++ b/aurore.py @@ -1,10 +1,86 @@ +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 = 'markdown' @app.route('/') -def accueil(): - return render_template('index.html') +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_mardown_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 caractère par caractère. 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 à part la balise ouvrante et la balise fermante + qui sont supprimees. + + :param html: Code HTML où 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_mardown_files(): + """ + Charge les fichiers markdowns 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__': diff --git a/markdown/07_05_2019_Test3.md b/markdown/07_05_2019_Test3.md new file mode 100644 index 0000000..478beca --- /dev/null +++ b/markdown/07_05_2019_Test3.md @@ -0,0 +1,24 @@ +Heading Test 3 +============== + +A [link][example]. + + [example]: http://example.com + A [link][example]. + + [example]: http://example.com + A [link][example]. + + [example]: http://example.com + A [link][example]. + + [example]: http://example.com + A [link][example]. + + [example]: http://example.com + A [link][example]. + + [example]: http://example.com + A [link][example]. + + [example]: http://example.com \ No newline at end of file diff --git a/markdown/10_05_2019_Test.md b/markdown/10_05_2019_Test.md new file mode 100644 index 0000000..7968fc1 --- /dev/null +++ b/markdown/10_05_2019_Test.md @@ -0,0 +1,33 @@ +Heading +======= + +## Sub-heading + +Paragraphs are separated +by a blank line. + +Two spaces at the end of a line +produces a line break. + +Text attributes _italic_, +**bold**, `monospace`. + +Horizontal rule: + +--- + +Bullet list: + + * apples + * oranges + * pears + +Numbered list: + + 1. wash + 2. rinse + 3. repeat + +> Markdown uses email-style > characters for blockquoting. + +Inline HTML is supported. \ No newline at end of file diff --git a/markdown/12_05_2019_Tést2.md b/markdown/12_05_2019_Tést2.md new file mode 100644 index 0000000..cb7f682 --- /dev/null +++ b/markdown/12_05_2019_Tést2.md @@ -0,0 +1,37 @@ +Heading Test 2 +============== + +## Sub-heading + +Paragraphs are separated +by a blank line. + +Two spaces at the end of a line +produces a line break. + +Text attributes _italic_, +**bold**, `monospace`. + +Horizontal rule: + +--- + +Bullet list: + + * apples + * oranges + * pears + +Numbered list: + + 1. wash + 2. rinse + 3. repeat + +A [link][example]. + + [example]: http://example.com + +> Markdown uses email-style > characters for blockquoting. + +Inline HTML is supported. \ No newline at end of file diff --git a/templates/events.html b/templates/events.html index ba30a4e..7efff5a 100644 --- a/templates/events.html +++ b/templates/events.html @@ -1,4 +1,23 @@

Evènements et foyers

-

Pas d'évènements prévus à ce jour :(

-
\ No newline at end of file + + {% if mds %} + {% for md in mds %} + +
{{ md[0].strftime('%a %d %b %Y') }}
+
{{ md[1] }}
+
{{ md[2] | safe }}
+
+ {% endfor %} + {% else %} +

Pas d'évènements prévus à ce jour :(

+ {% endif %} + + +{% if mds %} + {% for md in mds %} +
+ {{ md[3] | safe }} +
+ {% endfor %} +{% endif %} \ No newline at end of file