From cae46e21a80eb8b976ce18278a999755355efa0d Mon Sep 17 00:00:00 2001 From: Emmy D'Anello Date: Thu, 20 Apr 2023 15:10:08 +0200 Subject: [PATCH] Template the index.html with a JSON file, and add sources for the zero-day Signed-off-by: Emmy D'Anello --- .gitignore | 1 + Makefile | 11 +++++ data.json | 81 ++++++++++++++++++++++++++++++++++++ generate.py | 28 +++++++++++++ index.html | 83 ------------------------------------- requirements.txt | 1 + theme.js => static/theme.js | 0 templates/template.html.j2 | 76 +++++++++++++++++++++++++++++++++ 8 files changed, 198 insertions(+), 83 deletions(-) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 data.json create mode 100755 generate.py delete mode 100644 index.html create mode 100644 requirements.txt rename theme.js => static/theme.js (100%) create mode 100644 templates/template.html.j2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea1472e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +output/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7079371 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +generate: + python3 generate.py + cp static/* output/ + +clean: + rm output/* + +install: + rsync -arvP --delete-after output/ proxy.adm.ynerant.fr:/var/www/apaisement/ + +all: clean generate install diff --git a/data.json b/data.json new file mode 100644 index 0000000..a23e4ed --- /dev/null +++ b/data.json @@ -0,0 +1,81 @@ +[ + { + "index": 0, + "subtitle": "Allocution présidentielle", + "events": [ + { + "description": "Emmanuel Macron s'exprime à 20h devant les Français⋅es. Il fixe un cap de 100 jours pour appaiser le pays.", + "media": [ + { + "type": "youtube", + "code": "AJCXYPNkqX8" + } + ] + }, + { + "description": "Emmanuel Macron chante des chants pyrénéens avec une association d'extrême droite à Paris. Cette association avait été financée à hauteur de 40 000 € par le Ministère de la Culture.", + "media": [ + { + "type": "video", + "link": "https://video.twimg.com/ext_tw_video/1648244643618750465/pu/vid/1280x720/zbBImqSU23HYIdXy.mp4", + "source_text": "Twitter, @NicolasBoutin11", + "source_url": "https://twitter.com/NicolasBoutin11/status/1648245356042256384" + }, + { + "type": "link", + "link": "https://www.liberation.fr/checknews/emmanuel-macron-a-t-il-chante-dans-la-rue-avec-une-asso-proche-de-lultradroite-apres-son-allocution-televisee-20230418_TPTXITMBIJE23ANEFEQCSCVLAM/", + "text": "CheckNews : Emmanuel Macron a-t-il chanté dans la rue avec une asso proche de l’ultradroite après son allocution télévisée ?" + } + ] + } + ] + }, + { + "index": 1, + "subtitle": "La faute aux Maghrébin⋅es", + "events": [ + { + "description": "Bruno Le Maire affirme que l'argent de l'État part au Maghreb.", + "url": null, + "image": null + } + ] + }, + { + "index": 2, + "subtitle": "L'Alsace se rebèle", + "events": [ + { + "description": "Macron hué à Muttersholtz et à Sélestat.", + "url": null, + "image": null + }, + { + "description": "Le député LFI Emmanuel Fernandes baîlloné par le 49§3 devant Macron.", + "url": null, + "image": null + }, + { + "description": "La nouvelle devise du pays selon Véran : « Travail, Famille, Patrie Ordre, Progrès", + "url": null, + "image": null + } + ] + }, + { + "index": 3, + "subtitle": "Les casseroles classifiées comme armes", + "events": [ + { + "description": "La préfecture de l'Hérault interdit le port d'objets sonores portatifs.", + "url": null, + "image": null + }, + { + "description": "Le député LFI Sébastien Rome remet à Macron un livre sur la Résistance dans la région", + "image": null, + "url": null + } + ] + } +] diff --git a/generate.py b/generate.py new file mode 100755 index 0000000..b627d47 --- /dev/null +++ b/generate.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +from datetime import date, timedelta +import json + +from jinja2 import Environment, FileSystemLoader + + +BASE_DATE = date(2023, 4, 17) + +def to_date(offset: int, date_format="%d/%m/%Y"): + return (BASE_DATE + timedelta(days=offset)).strftime(date_format) + + +def generate(): + with open('data.json') as f: + data = json.load(f) + + env = Environment(loader=FileSystemLoader("templates/")) + env.filters['to_date'] = to_date + template = env.get_template("template.html.j2") + + with open('output/index.html', 'w') as f: + f.write(template.render(data=data)) + + +if __name__ == '__main__': + generate() diff --git a/index.html b/index.html deleted file mode 100644 index 4e6bfb5..0000000 --- a/index.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - Le pays est-il apaisé ? - - - - - - - - -

Le pays est-il apaisé ? NON

- -
-
-
- - Jour 3/100 - -
- Cette page est en construction, et a vocation à documenter l'ensemble des étapes de l'apaisement. -
- -
-
-

- -

-
-
- Emmanuel Macron chante des chants pyrénéens avec des personnes d'extrême droite dans Paris. -
-
-
- -
-

- -

-
-
- Bruno Le Maire dit que l'argent de l'État part au Maghreb. -
-
-
- -
-

- -

-
-
- Emmanuel Macron hué comme jamais à Muttersholtz et à Sélestat, en Alsace. Emmanuel Fernandes baîlloné par le 49§3. La CGT coupe le courant. Communication désastreuse.
- Olivier Véran dévoile la nouvelle devise du pays : « Travail, Famille, Patrie Ordre, Progrès » -
-
-
- -
-

- -

-
-
- Casseroles interdites au rassemblement à Ganges, dans l'Hérault. -
-
-
- - - - - diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..915b63c --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +Jinja2~=3.1.2 diff --git a/theme.js b/static/theme.js similarity index 100% rename from theme.js rename to static/theme.js diff --git a/templates/template.html.j2 b/templates/template.html.j2 new file mode 100644 index 0000000..fe2c3be --- /dev/null +++ b/templates/template.html.j2 @@ -0,0 +1,76 @@ + + + + + Le pays est-il apaisé ? + + + + + + + + +
+

Le pays est-il apaisé ? NON

+ +
+
+
+ + Jour 3/100 + +
+ Cette page est en construction, et a vocation à documenter l'ensemble des étapes de l'apaisement. +
+ +
+ {% for day in data %} +
+

+ +

+
+
+
    + {% for event in day.events %} +
  • +
    {{ event.description }}
    + {% for medium in event.media %} +
    + {% if medium.type == "link" %} +

    + {{ medium.text }} +

    + {% elif medium.type == "youtube" %} +
    + +
    + {% elif medium.type == "video" %} +
    +
    + +
    +

    + Source : {{ medium.source_text }} +

    +
    + {% endif %} +
    + {% endfor %} +
  • + {% endfor %} +
+
+
+
+ {% endfor %} +
+ + + +