Ajout dynamique des evenements - Il manque le frontend
This commit is contained in:
parent
adfb69dbf9
commit
c35ed68d0a
5 changed files with 193 additions and 4 deletions
80
aurore.py
80
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 (<a>) 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 ('<a') puis la fin de celle-ci ('>'). S'il a trouve une balise ouvrante il cherche alors une balise
|
||||
fermante ('</a>'). 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] == "<a ": # Début de la balise ouvrante d'un lien
|
||||
for j in range(3, len(html) - i - 3):
|
||||
if html[i + j] == ">": # Fin de la balise ouvrante
|
||||
i += j + 1
|
||||
break
|
||||
opened = True
|
||||
elif html[i:i + 4] == "</a>" 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__':
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue