Ajouts déplacements + popovers avec les informations
Signed-off-by: Emmy D'Anello <ynerant@emy.lu>
This commit is contained in:
parent
2fcdac3dd9
commit
aa5743e1e8
@ -1,16 +1,309 @@
|
||||
{
|
||||
"67": [
|
||||
{
|
||||
"date": "2023-04-19",
|
||||
"day_number": 2,
|
||||
"description": "Emmanuel Macron en déplacement Muttersholtz et à Sélestat dans le Bas-Rhin pour parler Jeux Olympiques"
|
||||
}
|
||||
],
|
||||
"34": [
|
||||
{
|
||||
"date": "2023-04-20",
|
||||
"day_number": 3,
|
||||
"description": "Emmanuel Macron en déplacement à Ganges en Hérault pour parler éducation"
|
||||
}
|
||||
]
|
||||
"05": {
|
||||
"title": "Déplacements dans les Hautes-Alpes",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 11,
|
||||
"description": "Marc Fesneau sera à Gap au salon de l’élevage."
|
||||
}
|
||||
]
|
||||
},
|
||||
"14": {
|
||||
"title": "Déplacements dans le Calvados",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 5,
|
||||
"description": " Mobilisation à Caen à 11h place Bouchard contre la venue de la caravane SNU."
|
||||
}
|
||||
]
|
||||
},
|
||||
"21": {
|
||||
"title": "Déplacements en Côte d'Or",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 3,
|
||||
"cancelled": true,
|
||||
"description": "Annulation de la venue d’Agnès Firmin Le Bodo à la conférence sur le thème de la fin de vie à Dijon à la salle Devosges"
|
||||
}
|
||||
]
|
||||
},
|
||||
"25": {
|
||||
"title": "Déplacements dans le Doubs",
|
||||
"moves":
|
||||
[
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Venue du ministre des armées Sébastien Lecornu à 17h rue Max Vuillemain à Besançon"
|
||||
}
|
||||
]
|
||||
},
|
||||
"26": {
|
||||
"title": "Déplacements dans la Drôme",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 3,
|
||||
"cancelled": true,
|
||||
"description": "Annulation de la visite d'Éric Dupond Moretti."
|
||||
},
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Venue du ministre chargé de l'industrie Roland Lescure et de la ministre de la transition énergétique Agnès Pannier-Runacher sur le site de la centrale nucléaire du Tricastin."
|
||||
}
|
||||
]
|
||||
},
|
||||
"28": {
|
||||
"title": "Déplacements en Eure-et-Loir",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 1,
|
||||
"description": "Comité d'accueil lors de la venue d'Olivier Dussopt pour la mise en œuvre de la réforme des retraites."
|
||||
}
|
||||
]
|
||||
},
|
||||
"31": {
|
||||
"title": "Déplacements en Haute-Garonne",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Annulation de la visite de Carole Grandjean à 11h au lycée hôtelier de Toulouse."
|
||||
}
|
||||
]
|
||||
},
|
||||
"33": {
|
||||
"title": "Déplacements en Gironde",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 0,
|
||||
"cancelled": true,
|
||||
"description": "Déplacement annulé de Darmanin et Fesneau à La-Teste-de-Buch sur les moyens dédiés à la lutte contre les incendies"
|
||||
}
|
||||
]
|
||||
},
|
||||
"34": {
|
||||
"title": "Déplacements dans l'Hérault",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 3,
|
||||
"description": "Manifestation à la gare de Montpellier Saint-Roch contre la venue d'Emmanuel Macron dans l'Hérault."
|
||||
},
|
||||
{
|
||||
"day_number": 3,
|
||||
"description": "Emmanuel Macron en déplacement à Ganges pour parler éducation."
|
||||
},
|
||||
{
|
||||
"day_number": 3,
|
||||
"description": "Annulation du déplacement prévu d'Emmanuel Macron à Lunel."
|
||||
}
|
||||
]
|
||||
},
|
||||
"36": {
|
||||
"title": "Déplacements dans l'Indre",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": " Elisabeth Borne en déplacement à Valençay et à Châteauroux."
|
||||
}
|
||||
]
|
||||
},
|
||||
"39": {
|
||||
"title": "Déplacements dans le Jura",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Venue de la ministre à l'égalité hommes-femmes à Lons-le-Saunier. Comité de non-accueil organisé par l'intersyndicale."
|
||||
}
|
||||
]
|
||||
},
|
||||
"44": {
|
||||
"title": "Déplacements en Loire-Atlantique",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 2,
|
||||
"cancelled": true,
|
||||
"description": "Le village du SNU de Nantes plie bagage au bout d'1h et Sarah El Haïry renonce à venir faire un discours."
|
||||
},
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Olivia Grégoire à la Baule à 8h30 et à Guérande à 9h40."
|
||||
}
|
||||
]
|
||||
},
|
||||
"47": {
|
||||
"title":"Déplacements dans le Lot-et-Garonne",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 2,
|
||||
"description": "Casserolade et mise en sobriété énergétique du bar à Agen qui accueillait le ministre de la Transition Numérique Jean-Noël Barrot."
|
||||
}
|
||||
]
|
||||
},
|
||||
"57": {
|
||||
"title": "Déplacements en Moselle",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 1,
|
||||
"cancelled": true,
|
||||
"description": "Annulation de la participation de la ministre de la Culture Rima Abdul-Malak à Politéïa, le festival qu’elle avait décidé de marrainer"
|
||||
}
|
||||
]
|
||||
},
|
||||
"60": {
|
||||
"title": "Déplacements dans l'Oise",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 0,
|
||||
"cancelled": true,
|
||||
"description": "Jean-Christophe Combe, le ministre des Solidarités, de l’Autonomie et des Personnes Handicapées, ne viendra pas à Chantilly."
|
||||
}
|
||||
]
|
||||
},
|
||||
"64": {
|
||||
"title": "Déplacements dans les Pyrénées-Atlantiques",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Gabriel Attal, repas officiel à la villa St Basil's dans le quartier Trespoey à Pau."
|
||||
}
|
||||
]
|
||||
},
|
||||
"67": {
|
||||
"title": "Déplacements dans le Bas-Rhin",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 2,
|
||||
"description": "Emmanuel Macron en déplacement Muttersholtz et à Sélestat dans le Bas-Rhin pour parler Jeux Olympiques"
|
||||
}
|
||||
]
|
||||
},
|
||||
"71": {
|
||||
"title": "Déplacements en Saône-et-Loire",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Visite d'Olivier Dussopt à 9h à l'entreprise Margaritelli à Fontaines."
|
||||
},
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Visite d'Olivier Dussopt à l'entreprise Novium à 14h à Montceau les Mines."
|
||||
}
|
||||
]
|
||||
},
|
||||
"72": {
|
||||
"title": "Déplacements dans la Sarthe",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 2,
|
||||
"description": "Casserolades au Mans et en forêt de Bercé pour accueillir Christophe Béchu."
|
||||
}
|
||||
]
|
||||
},
|
||||
"80": {
|
||||
"title": "Déplacements dans la Somme",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Bruno Le Maire et Christophe Béchu en déplacement à Nesle."
|
||||
}
|
||||
]
|
||||
},
|
||||
"75": {
|
||||
"title": "Déplacements à Paris",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 15,
|
||||
"cancelled": true,
|
||||
"description": "Annulation de la visite d’État du président algérien."
|
||||
},
|
||||
{
|
||||
"day_number": 1,
|
||||
"description": " Comité de non accueil pour JC. Combe et G. Darrieussecq en visite à la CAF de Paris."
|
||||
}
|
||||
]
|
||||
},
|
||||
"77": {
|
||||
"title": "Déplacements en Seine-et-Marne",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 2,
|
||||
"description": "Comité de non accueil pour la visite de Yaël Braun-Pivet au Centre Social et Culturel de Pontault-Combault."
|
||||
},
|
||||
{
|
||||
"day_number": 12,
|
||||
"description": " Caravane du SNU devant le centre commercial BAY 2 à Torcy."
|
||||
}
|
||||
]
|
||||
},
|
||||
"78": {
|
||||
"title": "Déplacements dans les Yvelines",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 3,
|
||||
"description": "Comité de non accueil pour la ministre des sports Amélie Oudéa-Castéra vers l'Arena de Nanterre."
|
||||
},
|
||||
{
|
||||
"day_number": 9,
|
||||
"description": "Caravane du SNU Place Notre-Dame à Versailles."
|
||||
}
|
||||
]
|
||||
},
|
||||
"83": {
|
||||
"title": "Déplacements dans le Var",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 10,
|
||||
"cancelled": true,
|
||||
"description": "Le président de la République devait participer à une réunion à Toulon sur le thème du Service national universel (SNU). Il a finalement renoncé à ce projet en raison du contexte social."
|
||||
},
|
||||
{
|
||||
"day_number": 3,
|
||||
"description": "Olivier Véran en visite à Brignolles."
|
||||
}
|
||||
]
|
||||
},
|
||||
"90": {
|
||||
"title": "Déplacements dans le Territoire de Belfort",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 3,
|
||||
"description": "Comité de non accueil pour Lecronu au 1er régiment d'artillerie à Bourogne, près de Belfort"
|
||||
},
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Visite d'Olivier Becht, le ministre du commerce extérieur et de l'attractivité, à l'usine d'Alstom à Belfort en début d'après-midi"
|
||||
}
|
||||
]
|
||||
},
|
||||
"91": {
|
||||
"title": "Déplacements dans l'Essonne",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 1,
|
||||
"cancelled": true,
|
||||
"description": "Sylvie Retailleau annule sa venue à l'Université Paris Saclay où un bâtiment a été mis en sobriété énergétique."
|
||||
}
|
||||
]
|
||||
},
|
||||
"93": {
|
||||
"title": "Déplacements en Seine-Saint-Denis",
|
||||
"moves": [
|
||||
{
|
||||
"day_number": 4,
|
||||
"cancelled": true,
|
||||
"description": "Annulation de la participation d'Olivier Klein à l’Assemblée Générale Ordinaire de l’ADIL de la Seine-Saint-Denis."
|
||||
},
|
||||
{
|
||||
"day_number": 4,
|
||||
"cancelled": true,
|
||||
"description": "Annulation de la venue du ministre de la santé François Braun à Ville Evrard."
|
||||
},
|
||||
{
|
||||
"day_number": 4,
|
||||
"description": "Venue du ministre de la Santé François Braun à 13h30 au centre médical Cap Horn à Montreuil."
|
||||
},
|
||||
{
|
||||
"day_number": 2,
|
||||
"description": "Casserolades lors de la visite de la ministre Carole Grandjean au CFA des métiers du luxe à Pantin."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
10
generate.py
10
generate.py
@ -34,9 +34,13 @@ def generate():
|
||||
for event in day['events']:
|
||||
for medium in event['media']:
|
||||
if 'subtitles_link' in medium:
|
||||
dest_file = os.path.join('output/subtitles', medium['subtitles_file'])
|
||||
if os.path.isfile(dest_file):
|
||||
continue
|
||||
|
||||
req = requests.get(medium['subtitles_link'], stream=True)
|
||||
|
||||
with open(os.path.join('output/subtitles', medium['subtitles_file']), 'wb') as f:
|
||||
with open(dest_file, 'wb') as f:
|
||||
for chunk in req.iter_content(chunk_size=1024):
|
||||
if chunk:
|
||||
f.write(chunk)
|
||||
@ -46,12 +50,12 @@ def generate():
|
||||
template = env.get_template("template.html.j2")
|
||||
|
||||
with open('output/index.html', 'w') as f:
|
||||
f.write(template.render(data=data, current_day=(date.today() - BASE_DATE).days))
|
||||
f.write(template.render(data=data, current_day=(date.today() - BASE_DATE).days, departement_shapes=shapes, apaisement=movings, today=date.today()))
|
||||
|
||||
svg_template = env.get_template("France_departements.svg.j2")
|
||||
|
||||
with open('output/France_departements.svg', 'w') as f:
|
||||
f.write(svg_template.render(data=data, departement_shapes=shapes, apaisement=movings, today=date.today()))
|
||||
f.write(svg_template.render(data=data, current_day=(date.today() - BASE_DATE).days, departement_shapes=shapes, apaisement=movings, today=date.today(), svg_only=True))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="587.5" height="550" id="svg2" version="1.0">
|
||||
<metadata id="metadata7">
|
||||
<rdf:RDF>
|
||||
@ -19,7 +18,7 @@
|
||||
.dpt-path {
|
||||
opacity: 1;
|
||||
color: #000000;
|
||||
fill: #ff0000;
|
||||
fill: #aaaaff;
|
||||
fill-opacity: 1;
|
||||
fill-rule: evenodd;
|
||||
stroke: #5d5d5d;
|
||||
@ -40,13 +39,17 @@
|
||||
}
|
||||
|
||||
.dpt-apaise {
|
||||
fill: #00ff00;
|
||||
fill: #55ff55;
|
||||
}
|
||||
|
||||
.dpt-prevu {
|
||||
fill: #ffa500;
|
||||
}
|
||||
|
||||
.dpt-cancelled {
|
||||
fill: #aa1111;
|
||||
}
|
||||
|
||||
.pref-path {
|
||||
opacity: 1;
|
||||
color: #000000;
|
||||
@ -106,7 +109,10 @@
|
||||
|
||||
<g inkscape:groupmode="layer" id="layer10" inkscape:label="Département" style="display:inline">
|
||||
{% for dpt, path in departement_shapes.items() %}
|
||||
<path id="departement{{ dpt }}" class="{% if dpt in apaisement %}dpt-apaise {% endif %}dpt-path" d="{{ path }}" {% if dpt in apaisement %}title="{% for mvmt in apaisement[dpt] %}Le {{ mvmt.date }} : {{ mvmt.description }}{% endfor %}"{% endif %}/>
|
||||
<path id="departement{{ dpt }}"
|
||||
class="{% if dpt in apaisement %}{% for mvmt in apaisement[dpt].moves %}{% if mvmt.cancelled %}dpt-cancelled{% elif mvmt.day_number < current_day %}dpt-apaise{% else %}dpt-prevu{% endif %} {% endfor %}{% endif %}dpt-path"
|
||||
d="{{ path }}"
|
||||
{% if dpt in apaisement and not svg_only %}data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-container="body" data-bs-title="{{ apaisement[dpt].title }}" data-bs-content="<ul class='list-group list-group-flush'>{% for mvmt in apaisement[dpt].moves %}<li class='list-group-item'>Le {{ mvmt.day_number|to_date }} : {{ mvmt.description }}</li>{% endfor %}</ul>"{% endif %}/>
|
||||
{% endfor %}
|
||||
</g>
|
||||
<g inkscape:groupmode="layer" id="layer4" inkscape:label="Préfecture" style="display:inline">
|
||||
@ -202,8 +208,6 @@
|
||||
<path sodipodi:type="arc" class="pref-path" id="path2401" sodipodi:cx="536.13281" sodipodi:cy="521.3075" sodipodi:rx="2.34375" sodipodi:ry="2.34375" d="M 538.47656 521.3075 A 2.34375 2.34375 0 1 1 533.78906,521.3075 A 2.34375 2.34375 0 1 1 538.47656 521.3075 z" transform="translate(-159.411,-245.8166)"/>
|
||||
<path sodipodi:type="arc" class="pref-path" id="path2403" sodipodi:cx="536.13281" sodipodi:cy="521.3075" sodipodi:rx="2.34375" sodipodi:ry="2.34375" d="M 538.47656 521.3075 A 2.34375 2.34375 0 1 1 533.78906,521.3075 A 2.34375 2.34375 0 1 1 538.47656 521.3075 z" transform="translate(-143.6668,-240.0162)"/>
|
||||
<path sodipodi:type="arc" class="pref-path" id="path2405" sodipodi:cx="536.13281" sodipodi:cy="521.3075" sodipodi:rx="2.34375" sodipodi:ry="2.34375" d="M 538.47656 521.3075 A 2.34375 2.34375 0 1 1 533.78906,521.3075 A 2.34375 2.34375 0 1 1 538.47656 521.3075 z" transform="translate(-107.4828,-225.1006)"/>
|
||||
<path sodipodi:type="star" style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" id="path17914" sodipodi:sides="5" sodipodi:cx="279.53775" sodipodi:cy="131.12292" sodipodi:r1="4.1226993" sodipodi:r2="1.4242409" sodipodi:arg1="0.93901779" sodipodi:arg2="1.5258971" inkscape:flatsided="false" inkscape:rounded="0" inkscape:randomized="0" d="M 281.97254,134.44985 L 279.60168,132.54573 L 277.12604,134.46662 L 278.20434,131.62339 L 275.61245,129.86251 L 278.64973,130.00943 L 279.52349,127.00025 L 280.32234,129.93428 L 283.45424,129.83538 L 280.91067,131.5018 L 281.97254,134.44985 z " transform="translate(0.462561,0.759965)"/>
|
||||
<path sodipodi:type="arc" style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.43383271;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" id="path17916" sodipodi:cx="275.44052" sodipodi:cy="126.13353" sodipodi:rx="3.8329053" sodipodi:ry="3.8329053" d="M 279.27343 126.13353 A 3.8329053 3.8329053 0 1 1 271.60762,126.13353 A 3.8329053 3.8329053 0 1 1 279.27343 126.13353 z" transform="matrix(1.152518,0,0,1.152518,-37.38373,-13.52132)"/>
|
||||
</g>
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 53 KiB |
@ -118,7 +118,13 @@
|
||||
</div>
|
||||
|
||||
<div class="text-center my-5">
|
||||
<img src="France_departements.svg" class="w-100" alt="Carte des différents rassemblements par département">
|
||||
{% include "France_departements.svg.j2" %}
|
||||
<p>
|
||||
<i>Une autre carte similaire ayant inspiré le jeu de données est disponible sur le site d'<a href="https://france.attac.org/se-mobiliser/retraites-pour-le-droit-a-une-retraite-digne-et-heureuse/article/on-ne-les-lache-pas-la-carte-des-mobilisations">ATTAC</a>.</i>
|
||||
</p>
|
||||
<p>
|
||||
<i>Récupérez la carte au format SVG <a href="France_departements.svg">ici</a>.</i>
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@ -134,6 +140,10 @@
|
||||
<script src="theme.js"></script>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Enable popovers
|
||||
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
|
||||
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl, {html: true}))
|
||||
|
||||
let baseDate = new Date("2023-04-17 20:00:00+0200")
|
||||
let baseDateDay = new Date("2023-04-17 00:00:00+0200")
|
||||
let endDate = new Date("2023-07-26 20:00:00+0200")
|
||||
|
Loading…
Reference in New Issue
Block a user