diff --git a/content/code/2023-12-25-format-usb-macos.md b/content/code/2023-12-25-format-usb-macos.md new file mode 100644 index 0000000..2a96941 --- /dev/null +++ b/content/code/2023-12-25-format-usb-macos.md @@ -0,0 +1,8 @@ +--- +title: Format an USB disk from the command-line on MacOSX +--- + +```bash +sudo diskutil unmountDisk /dev/disk5 +sudo diskutil eraseDisk "MS-DOS FAT32" Brocolis /dev/disk +``` diff --git a/content/pages/worklog/argos.md b/content/pages/worklog/argos.md index 8d22334..de6cc6d 100644 --- a/content/pages/worklog/argos.md +++ b/content/pages/worklog/argos.md @@ -4,12 +4,12 @@ save_as: argos/index.html total_days: 8 template: worklog --- -## Samedi 16 Décembre 2023 (0h, 5h, 5/5) +## Samedi 16 Décembre 2023 (0h, 5h bénévoles, 5/5) J'ai ajouté le support de [Alembic](https://alembic.sqlalchemy.org), pour permettre de faire des migrations de base de données. C'était assez chouette de découvrir comment ça fonctionne : ça fait longtemps que je l'utilise sur d'autres projets mais ce n'était pas moi qui l'avait mis en place. J'ai aussi passé un peu de temps à faire des petits changements à droite à gauche. -## Jeudi 14 Décembre 2023 (0h, 1h bénévole, 5/5) +## Jeudi 14 Décembre 2023 (0h, 1h bénévoles, 5/5) Echanges avec Luc pour faire le tour des merge requests, et un petit temps de bilan général sur le projet. Content de recevoir des retours positifs sur le travail effectué. diff --git a/content/pages/worklog/chariotte.md b/content/pages/worklog/chariotte.md index a5f6ea3..fb985ac 100644 --- a/content/pages/worklog/chariotte.md +++ b/content/pages/worklog/chariotte.md @@ -3,8 +3,15 @@ title: Chariotte save_as: chariotte/index.html template: worklog --- +## Dimanche 17 Décembre 2023 (0h, 8h bénévoles, 4/5) -## 27 Novembre 2023 (0h, 4h bénévoles, 3/5) +J'ai passé beaucoup de temps pour essayer de comprendre pourquoi les emails n'étaient pas envoyés lors de la récupération de mot de passe. J'ai fini par trouver en utilisant un bon vieux debugger, comme quoi c'est la solution à privilégier autant que possible. + +Le code actuel utilise `username` comme un champ de stockage d'emails, et Django avait du mal à retrouver ses petits (il cherchait dans le champ `email` sans succès). J'ai fini par trouver la solution. Je suis content de réussir à remonter en compétences sur le debug de django, même si je pensais que ça me prendrais moins de temps :-) + +J'ai aussi mis en place de la documentation. + +## Lundi 27 Novembre 2023 (0h, 4h bénévoles, 3/5) Chariotte.fr est maintenant hébergé par Alwaysdata ! Arthur m'a envoyé les données puis j'ai fait la commande suivante : @@ -15,4 +22,4 @@ scp hb_chariotte_prod.pgdump chariotte:.. pg_restore -C -f - hb_chariotte_prod.pgdump | sed 's/hb_chariotte_prod/chariotte_prod/g' | psql -U chariotte_prod -d chariotte_prod -h postgresql-chariotte.alwaysdata.net ``` -Le soir, j'ai tenté de comprendre pourquoi les mails ne sont pas envoyés. Sans trop réussir malheureusement. \ No newline at end of file +Le soir, j'ai tenté de comprendre pourquoi les mails ne sont pas envoyés. Sans trop réussir malheureusement. diff --git a/content/pages/worklog/idlv.md b/content/pages/worklog/idlv.md index ebd8f08..dd6d403 100644 --- a/content/pages/worklog/idlv.md +++ b/content/pages/worklog/idlv.md @@ -1,10 +1,16 @@ --- -title: IDLV, site web vers ghost +title: Indiens dans la ville save_as: idlv-ghost/index.html total_days: 2 template: worklog --- +Transformation d'un site web depuis hugo vers ghost. + +## 12 Janvier 2023 (1h, 4/5) + +Changement de la pagination par défaut. J'ai mis du temps à trouver ou était le bon réglage, mais c'était très simple une fois trouvé. Je m'attendais à trouver l'information dans l'admin, mais cela fait partie des réglages du thème. + ## 30 Octobre 2023 (0h, 1h bénévoles, 2/5) Incorporation des changements de Charly @@ -19,11 +25,11 @@ Incorporation des changements suite à discussion Réponse à un mail de Charly -## 23 Juin 2023 (1h, 1h bénévoles, 3/5) +## 23 Juin 2023 (0h, 2h bénévoles, 3/5) Ajout de la fonctionnalité de galerie. -## 22 Juin 2023 (1h, 2/5) +## 22 Juin 2023 (0h, 1h bénévoles, 2/5) Mail + recherches photoswipe ghost. diff --git a/content/pages/worklog/umap.md b/content/pages/worklog/umap.md index c7c1b21..bce2f29 100644 --- a/content/pages/worklog/umap.md +++ b/content/pages/worklog/umap.md @@ -4,6 +4,108 @@ save_as: umap/index.html template: worklog total_days: 25 --- +## Vendredi 12 Janvier 2023 (3h) + +J'ai continué à coder la piste initiée mercredi. Je me rends compte qu'il me +faudra peut-être un moyen de faire du lien entre les données, et que cette +information soit stockée quelque part (pour des re-rendus en cascade, si des +données sont dépendantes d'autres données). + +En tout cas, j'ai une interface un peu plus claire pour le Mixin de `rerender`. + + +## Mercredi 10 Janvier 2023 (7h, 4/5) + +La piste des IDs est finalement écartée pour l'instant, je ne suis pas encore +certain d'en avoir besoin, peut-être qu'il n'est pas utile d'identifier les +features de manière unique au niveau de la base de données, et que cette +information n'est utile que de manière ponctuelle pour la synchronisation de +données (avec les CRDTs). + +On a changé d'approche avec Yohan pour commencer à coder et voir ou ça +bloquerait. On a commencé par ajouter de la synchro sur les champs du +formbuilder de la carte. + +Je suis assez surpris par la relative simplicité de la tâche: je m'attendais à +quelque chose de bien plus compliqué, mais — en tout cas pour le formbuilder — +c'est assez simple puisque lui modifie des données qui lui sont extérieures. Il +est donc possible de se connecter sur son étape finale pour updater les données +à synchroniser. + +Actuellement, des `callbacks` sont définis manuellement par le code qui appelle +le formbuilder (pour re-rendre les éléments qui en ont besoin), on factorise +tout ça, pour faire en sorte que les données qui viennent de l'extérieur mettent +aussi à jour l'interface. + +Je suis content de réussir à avancer sur des trucs un peu plus concrets. Aussi +très content des discussions « en off » avec Yohan. L'impression qu'on réussi à +commencer à désamorcer certains trucs avant qu'ils ne s'installent. + +En fin de journée, je repasse sur la proposition de Json Joy qui me semble +intéressante en terme d'API, et plus tournée vers des composants réutilisables. + +Avec un peu de recul, les avancées de ces quelques jours ne sont pas techniques, +mais humainess. On a passé du temps à confronter des approches, avant de se +rendre compte qu'il s'agissait *aussi* de peurs chez l'un et chez l'autre, ce +qui nous a permis de trouver un moyen de travailler ensemble plus efficacement. +Frustrant de ne pas avoir avancé techniquement, mais l'impression d'être sur de +bons rails humains, et d'avoir pu dégrossir certains aspects du code pour me les +rendre compréhensibles. + +## Mardi 09 Janvier 2023 (8h, 3/5) + +On discute avec Yohan de comment faire pour avancer, on commence à travailler +en pair pour plutôt décider se séparer le travail au lieu de le faire ensemble. + +Yohan s'occupera de faire une séparation du code qui fait le « rendering », je +travaille sur la partie qui fait la synchronisation de données, qui va utiliser +les APIs exposées par Yohan. + +Ce choix m'aide à me sentir plus à l'aise: je n'ai pas besoin de faire trop +de refactoring sur un code que je ne connais pas et qui me demande beaucoup de +temps de lecture et de compréhension. + +Une discussion avec David me fait imaginer un scénario que j'avais oublié: +faire une bibliothèque Leaflet qui permet de faire de la synchro de données, de +manière générique. J'aime bien le fait que ça propose une séparation claire de +qui fait quoi, et permettrait d'avoir une frontière bien définie avec le code +actuel. + +Je ne trouve pas trop ma place dans la weekly qui est plus orientée décisions +stratégiques que updates des uns et des autres. Ça me pose question, j'aimerai +bien réussir à aborder le sujet lors d'un prochain point. + +Je travaille sur un bout de code qui ajoute la gestion des identifiants sur les +features GeoJSON, et j'ajoute un test dans playwright (c'est plaisant). Utiliser +des UUIDs (v4) voudrait dire avoir 36bits * 12 000 000 layers * 50 features = +21,6GB de données en plus sur la base de données de OSMFR. + +Partir sur des identifiants plus courts permet d'utiliser moins d'espace. + +Je suis content des bouts de discussions qu'on a pu avoir, qui entament une +réflexion sur la manière dont on travaille ensemble, ce qu'on attends l'un de +l'autre. Je me rends compte que ma confiance en moi est faible, et que j'ai +besoin de la conforter avant d'être efficace pour travailler avec d'autres. + +Content de la découverte, et d'avoir pu l'expliciter auprès de Yohan. +J'espère que ça débouchera sur quelque chose de sain et productif. + +## Lundi 08 Janvier 2023 (9h, 3/5) + +Matinée passée et début d'après midi avec Yohan à faire une release de uMap puis +à faire du bugfix dessus ensuite. Fin d'après-midi à discuter de la manière dont +on peut imaginer la suite du travail ensemble. On patine un peu, on a du mal à +trouver une manière de fonctionner qui nous convienne à tous les deux. + +## Lundi 18 Décembre 2023 (9h, 5/5) + +J'ai creusé sur mon idée de faire en sorte de synchroniser un point, j'ai une meilleure compréhension de ou m'insérer dans le code, et j'ai pu commencer à coder un bout de code qui fait la connexion avec le stockage. + +J'ai aussi commencé à coder la partie stockage, en mettant de côté pour le moment la partie CRDT en tant que telle, j'ai l'impression de voir comment ça va fonctionner maintenant, et l'intégration avec Y.JS me semble difficile sans utiliser de bundler js, ce qui est peut-être un signe qu'il faut aller voir ailleurs (Json Joy me fait de l'oeil) + +J'ai découvert la documentation de Leaflet [sur comment les objets fonctionnent](https://leafletjs.com/reference.html#class) et la documentation de [Leaflet Editable](http://leaflet.github.io/Leaflet.Editable/doc/api.html#editable) qui étaient en fait des lectures indispensables à la bonne compréhension du code de umap. + +On a terminé la journée avec une session de pair avec Yohan qui était vraiment bien : j'avais des questions précises et on a pu avancer ensemble vers plus de clarté. ## Samedi 16 Décembre 2023 (4h, 5/5) @@ -15,9 +117,10 @@ J'ai passé l'aprèm à mettre des petits points d'arrêts dans mon navigateur w Le fait qu'on utilise pas de bundler rends les choses un peu plus compliquées, mais je suis content d'avoir la main sur comment les choses sont faites. -J'ai un peu bloqué sur l'utilisation de Y.JS, qui s'attends à ce que d'autres modules soient disponibles dans des namespaces specifiques, ce qui ne correspond pas vraiment à nos pratiques. +J'ai un peu bloqué sur l'utilisation de Y.JS, qui s'attends à ce que d'autres modules soient disponibles dans des namespaces spécifiques, ce qui ne correspond pas vraiment à nos pratiques. J'ai découvert [import maps]() et j'ai commencé à les utiliser, mais ça ne semble pas suffire pour notre approche "simpliste". En tout cas, pas pour Y.JS (https://github.com/yjs/yjs/issues/325) + ## Vendredi 15 Décembre 2023 (7h, 3/5) 🚗 J'ai travaillé depuis la maison, suite à des soucis de voiture. @@ -28,7 +131,8 @@ J'ai pu discuter avec Vincent puis avec David du sujet. Je suis content [de l'ap J'en ai profité pour [ajouter mes apprentissages](https://github.com/umap-project/umap/pull/1471) dans la documentation développeur, le genre d'informations que je récupère à droite à gauche et qui sont utiles pour pouvoir contribuer. -J'ai un peu réorganisé mes notes autour des différents challenges qu'on a sur ce projet concernant les différents aspects (stockage, réactivité, réconcialition des données, transport). Et entre autre autour de la partie transport. +J'ai un peu réorganisé mes notes autour des différents challenges qu'on a sur ce projet concernant les différents aspects (stockage, réactivité, réconcialiation des données, transport). Et entre autre autour de la partie transport. + ## Jeudi 14 Décembre 2023 (8h, 5/5) Réunion le matin avec Yohan et NLNet, l'idée était de valider notre plan d'action, et c'est bon. Les documents sont signés on est surs d'avoir le financement. Sacrée nouvelle :-) @@ -41,7 +145,7 @@ L'après-midi j'ai passé un peu de temps pour voir comment on pourrait utiliser ## Mercredi 13 Décembre 2023 (2h, 3/5) - +Je n'ai pas pris de notes. ## Mardi 12 Décembre 2023 (4h, 4/5) @@ -165,4 +269,4 @@ J'ai aussi creusé autour des SSE et de WebRTC, question de comprendre les limit - Lu le code qui est dans uMap actuellement pour comprendre le fonctionnement actuel - Commencé à rédiger un document avec les différentes options pour faire de la synchro -- Fais des recherches sur les différentes options pour faire de la synchro \ No newline at end of file +- Fais des recherches sur les différentes options pour faire de la synchro diff --git a/content/weeknotes/2023-48.md b/content/weeknotes/2023-48.md index 6ee5c6b..3650f57 100644 --- a/content/weeknotes/2023-48.md +++ b/content/weeknotes/2023-48.md @@ -39,4 +39,4 @@ Quelques revues de code pour le projet ([maintenant public](https://framagit.org - 🎧 Écouté [Radiolab: Shrink](http://www.wnycstudios.org/story/shrink-2311/) qui parle de la découverte des [virus géants](https://fr.wikipedia.org/wiki/Virus_g%C3%A9ant?) d'une manière tout à fait accessible. - 🎧 Écouté [Radiolab: Boy Man](http://www.wnycstudios.org/story/boy-man/), un témoignage sur la puberté précoce - 🎵 (Oublié de dire que j'avais) découvert [Bruler Danser, de Lisette Lombé et Cloé du Trèfle](https://brulerdanser.bandcamp.com/album/bruler-danser). Un album slam sur de la musique électronique, des paroles très chouettes, une histoire qu'on à envie de réécouter. -- 📖 Continué et quasi terminé la lecture de « Le conflit n'est pas une agression ». J'en apprécie plusieurs morceaux, les relire les faits résonner chez moi. \ No newline at end of file +- 📖 Continué et quasi terminé la lecture de « Le conflit n'est pas une agression ». J'en apprécie plusieurs morceaux, les relire les faits résonner chez moi. diff --git a/content/weeknotes/2023-49.md b/content/weeknotes/2023-49.md new file mode 100644 index 0000000..464a0c2 --- /dev/null +++ b/content/weeknotes/2023-49.md @@ -0,0 +1,78 @@ +--- +date: 2023-12-17 +headline: +--- + +# 2023, Semaine 49 et 50 + +Deux semaines de travail depuis la dernière update. Je me suis fait mal au poignet ce qui m'a pas mal ralenti. + +## Ce qui s'est passé + +**🗺️ [uMap](https://github.com/umap-project/umap/)** + +J'ai posé et déroulé les différents scenarii pour avoir de la synchronisation entre différents clients. Lu et compris comment le code s'articule. Documenté certains aspects du code, et passé du temps sur des aspects techniques (intégration de modules ES6, utilisation de Web components). + +De manière générale, je monte en compétences sur JavaScript, et je rattrape mon retard des quelques années sur l'état du web 🤓 + +On a pu faire un petit point d'intégration, pour savoir si la manière de fonctionner convient à tout le monde. J'ai proposé de changer un peu de rythme, être à 2j/semaine est assez frustrant (j'ai l'impression d'arrêter le moteur quand il est à peine chaud). J'ai proposé de travailler des semaines continues, puis de faire des semaines *off*, on verra comment ça marche. + +On à eu le « go » officiel de NLNet, ce qui veut dire que je vais pouvoir travailler sur le projet durant les prochains mois. + +**🚨 [Argos](https://framagit.org/framasoft/framaspace/argos)** + +Un échange en visio avec Luc pour faire le tour des changements qu'il propose sur le projet. + +J'ai ajouté le support d'[Alembic](https://alembic.sqlalchemy.org), pour permettre de faire des migrations de base de données. C'était assez chouette de découvrir comment ça fonctionne : ça fait longtemps que je l'utilise sur d'autres projets mais ce n'était pas moi qui l'avait mis en place. + +J'ai aussi passé un peu de temps à faire des petits changements à droite à gauche et de la revue de code. + +**🧺 [Chariotte](https://gitlab.com/la-chariotte/)** + +J'ai passé du temps à comprendre pourquoi les emails n'étaient pas envoyés lors de la récupération de mot de passe. J'ai fini par trouver en utilisant un bon vieux debugger, comme quoi c'est la solution à privilégier autant que possible. + +J'ai ajouté de la documentation au projet, et je tends des perches pour qu'on puisse se former en interne sur la gestion du serveur, pour que je ne sois pas le seul à en avoir la compréhension. + +**[Notmyidea](https://blog.notmyidea.org)** + +J'ai pu faire mes premières factures, et j'ai même eu mes premiers paiements ! + +## Des joies 🤗 + +- 🪶 Me balader, observer les oiseaux, jouer à des jeux de société, manger des pancakes. +- 🧘🏼 Passer du temps seul, à plusieurs reprises, sur des périodes longues qui me permettent de me concentrer et d'avancer sur des choses importantes pour moi. +- 🌱 Prévenir les problèmes. Provoquer un point pour être sur qu'on se comprenne bien. Je suis content de l'avoir fait et ça me redonne de l'envie. +- 🤗 Avoir des bons retours sur mon travail valorise mon approche et mes compétences, je prends 😇 +- 🍅 Me remettre aux [pomodoro](https://fr.wikipedia.org/wiki/Technique_Pomodoro) qui me permettent de me concentrer plus facilement. +- 🎹 Faire du piano et chanter avec une amie +- Se prévoir du temps de qualité avec des petits groupes de personnes. +- J'ai pris mes places pour le 37C3 et j'ai pu m'organiser en avance pour le transport, content de voir le stress que ça m'enlève. + +## Des peines 😬 + +- 🥱 Je me suis parfois senti fatigué, j'ai parfois dormi en décalé. +- 🏸 Je me suis blessé au poignet gauche, inutilisable pour quelques jours. Ça m'a mis de mauvaise humeur, je n'ai pas réussi à me mettre en arrêt. +- 😤 Je lutte contre mon perfectionnisme. J'ai peur de l'ambiance que ça peut créer, je n'en veux pas. Envie de trouver des artifices pour changer de positionnement. +- 🤓 Je me sens parfois lent parce qu'en dehors de ma zone de confort, j'ai envie d'accepter mes temps d'apprentissages, et de m'assurer que personne ne s'attend à ce que je règle tous les problèmes d'un coup. +- 🫷🏼Je me suis senti triste en apprenant que certains continuent à alimenter leur version de la réalité pour ne pas se questionner sur ce qu'ils alimentent. Content de ne plus en être. +- Je me suis senti triste de me retrouver un week-end entre hommes et de voir le peu d'attention portée aux détails. +- J'ai peur de proposer des changements et que les gens n'osent pas dire non. Je passe beaucoup de temps à me rassurer, je ne sais pas encore trop quoi faire de ça et ça me coûte de l'énergie. + +## Vu, lu, écouté + +- 🎬 Vu [Retours à Reims, Fragments](https://fr.wikipedia.org/wiki/Retour_%C3%A0_Reims_(Fragments)) de Jean Gabriel Périot, basé sur le livre de Didier Éribon et des images d'archives. J'ai vraiment beaucoup apprécié le format, la mise en parallèle des luttes actuelles avec les luttes ouvrières, et le regard féministe. +- 📖 Continué et quasi terminé la lecture de « Le conflit n'est pas une agression ». J'apprécie plusieurs morceaux. +- 📘 J'ai lu d'une traite les 17 premiers articles de [24 jours de web](https://www.24joursdeweb.fr/). J'en retiens: + - [Juste place VS juste prix](https://www.24joursdeweb.fr/2023/juste-place-vs-juste-prix/) de [Julie](https://juliebrillet.fr/), qui fait écho à des interrogations actuelles chez moi, et que je mets en parallèle avec [un billet chez Scopyleft](http://scopyleft.fr/blog/2023/petit-panorama-des-pratiques-de-remuneration-en-horizontalite/) + - [Pourquoi se syndiquer dans l'informatique](https://www.24joursdeweb.fr/2023/pourquoi-se-syndiquer-dans-linformatique/) qui me fait dire que j'aurai sans-doute été mieux équipé si j'avais été syndiqué lors de mes années à la Brasserie. + - [Coder à nouveau après un harcèlement sexuel](https://www.24joursdeweb.fr/2023/coder-a-nouveau-apres-un-harcelement-sexuel/) + - [Concilier free-lance et TDAH](https://www.24joursdeweb.fr/2023/coder-a-nouveau-apres-un-harcelement-sexuel/). Ce n'est pas la première fois que des astuces pour les TDAH me semblent utiles pour moi, et ça me questionne, en tout cas certains des outils risquent de terminer dans ma boîte à outils. +- 🎬 J'ai terminé la série [Dirk Gently](https://fr.wikipedia.org/wiki/Dirk_Gently,_d%C3%A9tective_holistique_(s%C3%A9rie_t%C3%A9l%C3%A9vis%C3%A9e)), j'ai bien aimé le côté décalé, même si l'intrigue est parfois… pas très intéressante. +- 🎬 Vu « Le garçon et le héron » (de myazaki), j'ai vu que beaucoup de personnes avaient été déçues, mais j'ai tout de même passé un bon moment. +- 🎬 Vu « Rien à perdre », de Delphine Deloget. J'ai apprécié les discussions générées, et le regard critique qui pouvait être porté par certains de mes proches. +- 🎶 Découvert [DiscoPunk](https://www.diskopunk.com/), [The Silver Lines ](https://www.thesilverlinesuk.com/) + +Divers: + +- Découvert les [prix blue hats](https://code.gouv.fr/fr/bluehats/prix-bluehats/) qui cherchent à rémunérer les briques logicielles open source utils à l'état. +- [reefjs](https://reefjs.com/) qui propose une manière simple de faire du code « réactif » diff --git a/mnmlist/templates/worklog.html b/mnmlist/templates/worklog.html index df687e9..b1ea391 100644 --- a/mnmlist/templates/worklog.html +++ b/mnmlist/templates/worklog.html @@ -7,24 +7,45 @@ {% block content %}

{{ page.title }}

- {% if "total_days" in page.metadata.keys() %} - {% set percentage = page.metadata.worklog['percentage'] %} - {% set total_blocks = 10 %} - {% set percentage_value = (percentage / 100.0) %} - {% set full_blocks = ((percentage_value * total_blocks) | round(0, 'floor') ) | int %} - {% set empty_blocks = total_blocks - full_blocks %} -
- {# Display full blocks #} - {% for i in range(full_blocks) %}▓{% endfor %} - {# Display empty blocks #} - {% for i in range(empty_blocks) %}░{% endfor %} - {{ percentage }}% ({{ page.metadata.worklog['payed_hours'] }}h / {{ page.metadata.worklog['total_hours'] }} prévues) -
- - {% endif %} +
+ Stats + {% if "total_days" in page.metadata.keys() %} + {% set percentage = page.metadata.worklog['percentage'] %} + {% set total_blocks = 10 %} + {% set percentage_value = (percentage / 100.0) %} + {% set full_blocks = ((percentage_value * total_blocks) | round(0, 'floor') ) | int %} + {% set empty_blocks = total_blocks - full_blocks %} +
+ {# Display full blocks #} + {% for i in range(full_blocks) %}▓{% endfor %} + {# Display empty blocks #} + {% for i in range(empty_blocks) %}░{% endfor %} + {{ percentage }}% ({{ page.metadata.worklog['payed_hours'] }}h / {{ page.metadata.worklog['total_hours'] }} prévues) +
+ + {% endif %} + + + + + + + + + + {% for month, amount in page.metadata.worklog.payed_monthly.items() %} + + + + + + {% endfor %} + +
MoisHeuresJours
{{ month }}{{ amount }}{{ (amount / 7.0) | round(1) }}
+
diff --git a/pelicanconf.py b/pelicanconf.py index f95a2d7..3ad8829 100644 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -18,6 +18,8 @@ RELATIVE_URLS = True TIMEZONE = "Europe/Paris" LOCALE = "fr_FR" +TAG_FEED_ATOM = "feeds/tags/{slug}.atom.xml" + DEFAULT_DATE_FORMAT = "%d %B %Y" LINKS = [] diff --git a/simplereader.py b/simplereader.py index 70f18b7..c3ba417 100644 --- a/simplereader.py +++ b/simplereader.py @@ -1,6 +1,7 @@ import locale import os.path import re +from collections import defaultdict from datetime import datetime from pathlib import Path @@ -11,14 +12,14 @@ from pelican.utils import get_date, slugify try: locale.setlocale(locale.LC_TIME, "fr_FR.UTF8") -except: +except Exception: locale.setlocale(locale.LC_TIME, "fr_FR") class WorklogPreprocessor(Preprocessor): pattern = re.compile( r""" - (?:(\w+)\s+)? # Day name + (?:(\w+)\s+)? # Day name (\d{1,2})\s+ # Day number ([\wéû]+)\s+ # Month name (\d{4})\s+ # Year @@ -37,6 +38,7 @@ class WorklogPreprocessor(Preprocessor): def __init__(self, *args, **kwargs): self.data = {} + self.payed_monthly = defaultdict(int) super().__init__(*args, **kwargs) def run(self, lines): @@ -63,8 +65,9 @@ class WorklogPreprocessor(Preprocessor): self.data[date.strftime("%Y-%m-%d")] = { "payed_hours": payed_hours, "volunteer_hours": volunteer_hours, - "happyness": happiness, + "happiness": happiness, } + self.payed_monthly[date.strftime("%Y/%m")] += payed_hours displayed_date = date.strftime("%A %d %B %Y") # Replace the line with just the date @@ -74,15 +77,20 @@ class WorklogPreprocessor(Preprocessor): return new_lines def compute_data(self, metadata): + """Do the operations on the data. + + This is run once, after everything has been parsed + """ payed_hours = sum([item["payed_hours"] for item in self.data.values()]) volunteer_hours = sum([item["volunteer_hours"] for item in self.data.values()]) + data = dict( data=self.data, payed_hours=payed_hours, volunteer_hours=volunteer_hours, + payed_monthly=self.payed_monthly, template="worklog", ) - if "total_days" in metadata: total_hours = int(metadata["total_days"]) * 7 data.update(