From a7150d346ba8992b969d67a477bea009d78328f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20M=C3=A9taireau?= Date: Sun, 25 Feb 2024 16:35:52 +0100 Subject: [PATCH] Update theme, weeknotes 18 --- content/code/2024-02-22-django-urls.md | 24 ++++++ content/pages/worklog/umap.md | 25 ++++++ content/weeknotes/17.md | 6 +- content/weeknotes/18.md | 100 ++++++++++++++++++++++++ mnmlist/static/css/main.css | 14 +++- mnmlist/templates/analytics.html | 5 +- mnmlist/templates/archives.html | 28 +++---- mnmlist/templates/article.html | 66 ++++++++-------- mnmlist/templates/categories.html | 25 +++--- mnmlist/templates/category.html | 78 +++++++++---------- mnmlist/templates/comments.html | 14 ++-- mnmlist/templates/disqus_script.html | 4 +- mnmlist/templates/github.html | 24 ++++-- mnmlist/templates/index.html | 60 ++++++++------- mnmlist/templates/page.html | 8 +- mnmlist/templates/pagination.html | 24 +++--- mnmlist/templates/piwik.html | 14 +++- mnmlist/templates/taglist.html | 13 +++- mnmlist/templates/tags.html | 15 ++-- mnmlist/templates/translations.html | 2 +- mnmlist/templates/twitter.html | 7 +- mnmlist/templates/worklog.html | 102 ++++++++++++------------- 22 files changed, 428 insertions(+), 230 deletions(-) create mode 100644 content/code/2024-02-22-django-urls.md create mode 100644 content/weeknotes/18.md diff --git a/content/code/2024-02-22-django-urls.md b/content/code/2024-02-22-django-urls.md new file mode 100644 index 0000000..58ad2e0 --- /dev/null +++ b/content/code/2024-02-22-django-urls.md @@ -0,0 +1,24 @@ +--- +title: Using uuids in URLs in a Django app +tags: django, urls, uuid +--- + +After adding a regexp for uuids (which are quite hard to regexp for), I +discovered that Django [offers path converters](https://docs.djangoproject.com/ +en/5.0/topics/http/urls/#path-converters), making this a piece of cake. + +I was using old school `re_path` paths in my `urls.py`, but it's possible to +replace them with `path`, like this: + +```python +url_patterns = ( + path( + "datalayer///", + views.DataLayerView.as_view(), + name="datalayer_view", + ), +) +``` + +A few default path converters are defined (str, int, slug, uuid, path), but it's +also possible to define your own, as specified in the docs. diff --git a/content/pages/worklog/umap.md b/content/pages/worklog/umap.md index 3714f4d..efded27 100644 --- a/content/pages/worklog/umap.md +++ b/content/pages/worklog/umap.md @@ -5,6 +5,31 @@ template: worklog total_days: 25 --- +## Samedi 24 Février 2024 (4h, 5/5) + +J'ai suivi mon envie de creuser sur les CRDT, je sens qu'on est bientôt prêts pour +pouvoir avancer sur le sujet, mais je manque d'une bonne compréhension des différentes +libs, de ce qu'elles proposent (API), et de comment on va les utiliser. + +J'ai pris l'approche « article » et donc j'ai commencé la rédaction d'un article de +comparaison des différentes approches (ce qu'attends NLNet, d'ailleurs). C'est chouette +de voir que j'avance petit à petit, et que le chemin pour arriver à destination, même si +il n'est pas complètement clair, est au moins visible. + +## Jeudi 22 Février 2024 (10h, 5/5) + +Une bonne grosse journée :-) J'ai avancé sur le changement vers des UUIDs pour +les layers, je suis pas encore sur que ce soit la version finale mais ça avance +dans la bonne direction. J'ai l'impression que je vais devoir aller voir d'un +peu plus près les entrailles de Django et des migrations pour pouvoir récupérer +le bon nom des contraintes qui sont générées par l'ORM. + +J'en ai profité pour remettre au gout du jour la PR sur les IDs des features, et +pour commencer à travailler sur le problème du `Last-Modified` qui ne peut pas +avoir plus d'une requête à la même seconde, ce qui nous cause des soucis. + +C'est chouette de faire quelques pull requests :-) + ## Lundi 19 Février 2024 (8h, 4/5) Un bout de temps pour debugger des histoires d'agent ssh qui n'utilise plus la diff --git a/content/weeknotes/17.md b/content/weeknotes/17.md index 987ae78..a99df8e 100644 --- a/content/weeknotes/17.md +++ b/content/weeknotes/17.md @@ -18,7 +18,7 @@ Un super début de semaine, une perte d'énergie puis du temps pour moi et de la - 🫖 Réussir à tenir les jours « off », ne pas culpabiliser de ne pas travailler ! - 😸 La « vie après la journée » ! Aller boire un verre en ville en toute simplicité. Se dire qu'on s'apprécie. - 🚅 Organiser le transport et le logement pour les semaines à venir, je prévois d'être en déplacement et de travailler en même temps. Je suis content de l'avoir fait, ça m'enlève un poids. -- 🤗 Prendre le temps de clarifier les enjeux relationnels lors de conflits en cours. Je choisis de ne pas rentrer dans une confrontation parce que sens que ce n'est pas le moment idéal pour le groupe… +- 🤗 Prendre le temps de clarifier les enjeux relationnels lors de conflits en cours. Je choisis de ne pas rentrer dans une confrontation parce que je sens que ce n'est pas le moment idéal pour le groupe… ## Des peines 😬 @@ -32,8 +32,8 @@ Un super début de semaine, une perte d'énergie puis du temps pour moi et de la - 📘 J'ai terminé la lecture de « Le conflit n'est pas une agression » et [j'ai publié quelques notes sur le livre](https://blog.notmyidea.org/le-conflit-nest-pas-une-agression.html). J'apprécie avoir pris le temps de cette lecture éclairante. - 📖 J'ai commencé à lire « Oser la confiance, propos sur l'engagement des dirigeants ». À suivre. -- 🎮 J'ai commencé à jouer à [Outer Wilds](https://fr.wikipedia.org/wiki/Outer_Wilds) sur switch, et je n'ai pas vu les heures défiler. J'ai beaucoup aimé le contraste entre le début du jeu dans une ambiance chill-banjo-coucher-de-soleil et mes premières explorations de planètes tout à fait hostiles ou j'avais du mal à faire quoi que ce soit. -- 📻 [Quelques](https://www.youtube.com/watch?v=7GFhgv5jfZk&t=825s) [vidéos](https://www.youtube.com/watch?v=3IroC4pHorY&t=397s) pour mieux comprendre le fonctionnement des systèmes NFC. +- 🎮 J'ai commencé à jouer à [Outer Wilds](https://fr.wikipedia.org/wiki/Outer_Wilds) sur switch, et je n'ai pas vu les heures défiler. J'ai beaucoup aimé le contraste entre le début du jeu dans une ambiance chill-banjo-couché-de-soleil et mes premières explorations de planètes tout à fait hostiles ou j'avais du mal à faire quoi que ce soit. +- 📻 [Quelques](https://www.youtube.com/watch?v=7GFhgv5jfZk&t=825s) [vidéos](https://www.youtube.com/watch?v=3IroC4pHorY&t=397s) pour mieux comprendre le fonctionnement des systèmes NFC, et leurs failles. - ⏯ Vu [Valeurs actuelles : quand la bourgeoisie s'ensauvage](https://www.youtube.com/watch?v=IjSdrg5Bq3w). Toujours très intéressant de voir les dessous des cartes des médias. Je ne connaissais pas cette émission (rhinocéros), je la garde sous le coude (merci Julie !). - 🎵 Découvert [Crystal Castles](https://www.youtube.com/watch?v=SSc7Oxi0wWE), [Tuba Skinny](https://www.youtube.com/watch?v=861jOEqVr4Q), [le dernier album de Sigur Ros](https://www.youtube.com/watch?v=seQGmak5b7s), [le dernier album d'Idles](https://shop.idlesband.com/) (et [chez tiny desk](https://www.youtube.com/watch?v=wMehItNQKAA)) diff --git a/content/weeknotes/18.md b/content/weeknotes/18.md new file mode 100644 index 0000000..e3527fe --- /dev/null +++ b/content/weeknotes/18.md @@ -0,0 +1,100 @@ +--- +date: 2024-02-25 +headline: notes hebdo de la semaine +projects: umap +--- +# Notes hebdo #18 + +## Ce qui s'est passé + +**🗺️ [uMap](https://umap-projet.org)** +: J'ai terminé mon expérimentation sur la synchronisation, ça fonctionne en mode « démo » et ça me donne une compréhension du code suffisante pour avancer sur le sujet. +: J'ai commencé à discuter avec Aurélie de comment faire pour la partie expérience utilisateur·ice. C'est chouette parce que je connais mal cette partie. Hâte d'avancer la dessus ! +: J'ai proposé quelques modifications pour ajouter des identifiants uniques, [pour chaque feature](https://github.com/umap-project/umap/pull/1649), et [pour chaque layer](https://github.com/umap-project/umap/pull/1630). +: J'ai avancé sur le choix des bibliothèques pour la partie CRDT, plutôt que d'avancer sur un protocole maison comme j'ai pu le faire par le passé. Ce n'est pas encore clair, mais je me donne un cadre d'analyse qui me parait intéressant, et en lien avec ce qu'on avait décidé pour la proposition à NLNet (ce qui me permettra d'être payé) + +🎵 **Musique** +: On a travaillé sur la musique du solo de clown d'Emeline, et repris le travail entamé l'année dernière. J'ai fait des changements pour utiliser la vue « session » d'Ableton, pour que la musique s'adapte à son jeu et pas l'inverse. +: On a relancé les défis artistiques avec Sam et Sim: on se donne des contraintes et on réalise une musique avec. [J'ai passé un bon moment](https://soundcloud.com/the-lost-triangle/du-souffle), reggae style :-) +: Je continue la fanfare et c'est toujours aussi plaisant. Avoir le temps de travailler avant les répétions, c'est génial. + +🧰 **Réparations, etc** +: J'ai prolongé la durée de vie d'un macbook pro 7,1 (de 2011) grâce au travail de [Open Core Legacy Patcher](https://dortania.github.io/OpenCore-Legacy-Patcher/) et cette [liste de conseils](https://gist.github.com/wolfiediscord/d02d5d30898c8cacd6b5c1ab83af95b9#Discord-Servers-for-Support) +: J'ai profité du travail pour le clown d'Emeline pour faire remarcher un vieux launchpad, dans l'espoir qu'il permette de ne pas être rivé à l'écran en cadre « live » +## Des joies 🤗 + +- Discuter méthodologie avec Aurélie, pour savoir comment intégrer la fonctionnalité de collaboration dans uMap. Content de m'éloigner un instant de la technique pour essayer d'avoir un regard un plus global sur ce que j'essaye de faire. +- Prendre du plaisir à travailler sur des aspects techniques pour uMap. +- Faire plusieurs sessions de *pair programming* et de discussions avec différentes personnes dans la même journée. +- Proposer mon aide de manière concrète à des gens qui me l'avaient demandé au fil d'une discussion, et ne m'avaient pas relancés. C'était chouette de m'organiser pour rendre ça possible. +- Comprendre mes besoins, proposer une discussion simple pour éviter les malentendus et passer à autre chose une fois le sujet clos. +- Reprendre le sport ! C'était bien, même j'ai un peu mal partout. +- Me réserver du temps personnel pour lire, jouer et accepter que c'est ce dont j'ai besoin. +- Je continue d'adorer aller au brass band. Quel plaisir de retrouver un espace de jeu musical, en toute bienveillance. +- Réussir à dépasser un petit conflit en mettant fin à la discussion après plusieurs tentatives pour clarifier mon besoin. +- Lire la nuit, prendre des notes et avoir le temps de dormir le lendemain matin. #oiseaudenuit + +## Des peines 😬 + +- J'aurais aimé avoir plus de temps pour avancer en pair avec les collègues. J'aimerai trouver des créneaux qui sont plus propices au travail un peu suivi. Trouver le rythme n'est pas toujours évident à deux jours par semaine sur uMap. +- Je me sens parfois perdre mes moyens quand je travaille en pair, j'aimerai mieux comprendre ce qui se passe chez moi, et que le regard de l'autre prenne moins de place pour arriver sur des échanges plus sereins et fluides. + +## Vu, Lu, etc + +- 🍿 Vu « La crise » de Coline Serreau, avec au moins [deux](https://www.youtube.com/watch?v=YxwWFIkXcuA) [extraits](https://www.youtube.com/watch?v=rIP7e0IZL9I) mémorables. +- 🍿 Vu « Sans jamais nous connaitre », avec Andrew Scott et Paul Mescal. Malgré quelques longueurs j'ai trouvé le film intéressant, beaucoup de tendresse et d'amour. Beaucoup de tristesse aussi. +- ⏯ [Sortir du capitalisme, mode d'emploi, sur blast](https://www.youtube.com/watch?app=desktop&v=PrWDrTLB7fU&feature=youtu.be) avec des modèles économiques alternatifs. Le premier modèle concerne une approche à travers l'investissement, et comment cet investissement pourraient être géré de manière démocratique plutôt que d'être laissé à la « main invisible du marché ». Je suis un peu triste de ne pas voir le sujet de la prise de décision plus creusé, ça me semble être un point crucial laissé pour le moment en attente. L'interviewé s'en sort avec une galipette en disant que c'est parce que les gens n'ont jamais tenté d'utiliser ça, et qu'en pratique c'est très simple, et j'avoue avoir un autre rapport au sujet. +- ⏯ [Une conférence sur Garage](https://fosdem.org/2024/schedule/event/fosdem-2024-3009-advances-in-garage-the-low-tech-storage-platform-for-geo-distributed-clusters/), de [deuxfleurs](https://deuxfleurs.fr), un outil pour faciliter le stockage de données de manière décentralisée. Ça donne vraiment envie d'essayer de mettre en place quelque chose de similaire ! +- 🎧 [Les pieds sur terre, Hacking Sauvage](https://www.radiofrance.fr/franceculture/podcasts/les-pieds-sur-terre/hacking-sauvage-7643861), un épisode qui parle de harcèlement numérique. Assez dingue et révoltant. +- 🎧 [K.O. pour le véganisme ? - Valéry Giroux (Épisode spécial)](https://www.youtube.com/watch?v=BgC68CR1qN4), un épisode de podcast qui vient parler de l'anti spécisme du point de vue philosophique. +- 🎵Redécouvert [HERMIA & CECCALDI & DARRIFOURCQ](https://babel-label.bandcamp.com/track/ho-chi-minh) avec leur album de free jazz « God at the casino ». Génial. +- 🎵Découvert [Craven Faults](https://www.youtube.com/watch?v=KRT-tIn9yeE), de la musique ambiant progressive qui me rappelle [des vibes de Archive / Lights](https://www.youtube.com/watch?v=yLuOzNeHw5I). Si vous êtes en recherche de concentration et que vous aimez la répétition, en voici 26 minutes. +- 📖 J'ai continué « Oser la confiance » + +## Notes + +### Le principe de Shirky + +Je découvre via Jan Wildeboer [le « principe de Shirky »](https://effectiviology.com/shirky-principle/): + +> The _Shirky principle_ is the adage that “institutions will try to preserve the problem to which they are the solution”. More broadly, it can also be characterized as the adage that “every entity tends to prolong the problem it is solving”. + +Je trouve ça intéressant de comparer ça à l'« homéostasie » (merci Thomas): + +> En biologie et en systémique, l’homéostasie est un phénomène par lequel un facteur clé (par exemple, la température) est maintenu autour d'une valeur bénéfique pour le système considéré, grâce à un processus de régulation. +> +> – [Wikipedia](https://fr.wikipedia.org/wiki/Hom%C3%A9ostasie) + +### Bluesky & Mastodon + +> - **Composable moderation:** Moderation on Bluesky is not tied to your server, like it is on Mastodon. Defederation, a way of addressing moderation issues in Mastodon by disconnecting servers, is not as relevant on Bluesky because there are other layers to the system. Server operators can set rules for what content they will host, but tools like blocklists and moderation services are what help communities self-organize around moderation preferences. We’ve already integrated block and mute lists, and the tooling for independent moderation services is coming soon. +> - **Composable feeds:** We designed your timeline on Bluesky so that it’s not tied to your server. Anyone can build a feed, and there are currently over 40,000 algorithmic feeds to choose from. Your Mastodon timeline is only made up of posts from accounts you follow, and does not pull together posts from the whole network like Bluesky’s custom feeds. +> - **Account portability:** We designed federated hosting on Bluesky so that you can move servers easily. Moving hosting services should be like changing your cell phone provider — you should be able to keep your identity and data. Changing servers on Bluesky doesn’t disrupt your username, friends, or posts. +> +> — https://bsky.social/about/blog/02-22-2024-open-social-web + +Je ne voulais pas regarder du côté de Bluesky tant que les promesses (de fédération) n'étaient pas concrètes. Je suis content de voir que c'est fédéré, open source, et que ça réponds à certains besoins de la communauté d'une manière différente. + +Plusieurs retours me font mieux comprendre ce que Mastodon permet et terme de protection et de soin des usagers. + +Un retour intéressant: + +> As someone who belongs to several identities which are often the target of hate, **I do not actually want a global conversation, or moderation services that let me block users or content.** +> *I do not want to be on the same network as the people who hate me.* +> "Global conversation" is great for some people. It's really bad for others. +> +> https://mastodon.social/@tess/111977331532402530 + +Bluesky travaille plutôt à rendre des espaces publics et fédérés, sans prendre en compte les aspects de différente visibilité des messages. + +C'est ce qui semble ressortir [dans leur FAQ](https://bsky.social/about/blog/5-19-2023-user-faq). + +> Bluesky is a public social network. Think of your posts as blog posts – **anyone on the web can see them**, even those without an invite code. +> [...] +> Specifically: +> - **Posts and likes are public.** +> **- Blocks are public.** +> - Mutes are private, but mutelists are public lists. Your mutelist subscriptions are private. +> - Invites and invite trees are private. + +Je n'arrive pas encore à y voir clair sur l'approche prise par Bluesky concernant la modération. Est-ce que c'est remettre à l'utilisateur les clés de la modération (avec la charge émotionnelle et politique qui va avec) ? A suivre. \ No newline at end of file diff --git a/mnmlist/static/css/main.css b/mnmlist/static/css/main.css index 21efce1..436902e 100644 --- a/mnmlist/static/css/main.css +++ b/mnmlist/static/css/main.css @@ -13,7 +13,7 @@ :root { --main-bg-color: #ffffff; --border-color: #ACACAC; - --code-bg-color: #e5e5e2; + --code-bg-color: #f6f6f6; --quote-bg-color: #f6f6f6; --link-color: #BB7DD4; --text-color: #2d2d2d; @@ -196,7 +196,6 @@ a { color: inherit; text-decoration-color: var(--link-color); text-decoration-thickness: 3px; - font-weight: 600; } a:hover { @@ -253,7 +252,6 @@ header a { header h1 { margin-bottom: 30px; - display: inline-block; } @@ -329,6 +327,14 @@ section.index h1 { padding-bottom: 10px; } +p code { + font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + background: var(--code-bg-color); + padding: 2px 4px; + font-size: .9em; + line-height: 1; + border-radius: 6px; +} .note { background: var(--code-bg-color); @@ -480,4 +486,4 @@ dd { font-size: 1em; display: inline; float: left; -} \ No newline at end of file +} diff --git a/mnmlist/templates/analytics.html b/mnmlist/templates/analytics.html index ba174fc..605db4c 100644 --- a/mnmlist/templates/analytics.html +++ b/mnmlist/templates/analytics.html @@ -7,5 +7,6 @@ try { var pageTracker = _gat._getTracker("{{GOOGLE_ANALYTICS}}"); pageTracker._trackPageview(); - } catch(err) {} -{% endif %} \ No newline at end of file + } catch(err) {} + +{% endif %} diff --git a/mnmlist/templates/archives.html b/mnmlist/templates/archives.html index 3db058b..37133da 100644 --- a/mnmlist/templates/archives.html +++ b/mnmlist/templates/archives.html @@ -1,16 +1,18 @@ {% extends "base.html" %} {% block content %} -
-

Archives

-
-
-
-{% for year, articles in dates | groupby("date.year") | reverse %} -
{{ year }}
- {% for article in articles %} -
{{ article.title }}
- {% endfor %} -{% endfor %} -
-
+
+

Archives

+
+
+
+ {% for year, articles in dates | groupby("date.year") | reverse %} +
{{ year }}
+ {% for article in articles %} +
+ {{ article.title }} +
+ {% endfor %} + {% endfor %} +
+
{% endblock %} diff --git a/mnmlist/templates/article.html b/mnmlist/templates/article.html index 52eec75..bb44ceb 100644 --- a/mnmlist/templates/article.html +++ b/mnmlist/templates/article.html @@ -1,38 +1,44 @@ {% extends "base.html" %} {% block title %}{{ article.title }} - {{ super() }}{% endblock %} {% block content %} - -
- {% if article.category == "Lectures" %} - {% if article.category == "Lectures" and article.isbn_cover %} -
- -
- {% endif %} -

{{ article.title }}
par {{ article.author }}

- {% if article.headline %} -

{{ article.headline }}

- {% endif %} - - {% else %} -

{{ article.title }}

- {% if article.headline %} -

{{ article.headline }}

- {% endif %} - - {% endif %} - - +
+ {% if article.category == "Lectures" %} + {% if article.category == "Lectures" and article.isbn_cover %} +
+ +
+ {% endif %} +

+ {{ article.title }} +
+ par {{ article.author }}
+

+ {% if article.headline %} +

+ {{ article.headline }} +

+ {% endif %} + + {% else %} +

{{ article.title }}

+ {% if article.headline %} +

+ {{ article.headline }} +

+ {% endif %} + + {% endif %}
{{ article.content }} - {% if article.tags %} -

- {% for tag in article.tags %} - #{{ tag }}{% if not loop.last %}, {% endif %} - {% endfor %} - - Posté dans la catégorie {{ article.category }} -

- {% endif %} + {% if article.tags %} +

+ {% for tag in article.tags %} + #{{ tag }} + {% if not loop.last %},{% endif %} + {% endfor %} + - Posté dans la catégorie {{ article.category }} +

+ {% endif %}
{% endblock %} diff --git a/mnmlist/templates/categories.html b/mnmlist/templates/categories.html index beb9410..262d6ab 100644 --- a/mnmlist/templates/categories.html +++ b/mnmlist/templates/categories.html @@ -1,14 +1,17 @@ {% extends "base.html" %} {% block content %} - -
-{% for category, articles in categories %} - {% if category in CATEGORIES_DESCRIPTION.keys() %} -

{{ CATEGORIES_DESCRIPTION[category][0] }}

-
{{ CATEGORIES_DESCRIPTION[category][1] }}. {{ articles | length }} articles.
- {% endif %} -{% endfor %} -
- - +
+ {% for category, articles in categories %} + {% if category in CATEGORIES_DESCRIPTION.keys() %} +
+

+ {{ CATEGORIES_DESCRIPTION[category][0] }} +

+
+
+ {{ CATEGORIES_DESCRIPTION[category][1] }}. {{ articles | length }} articles. +
+ {% endif %} + {% endfor %} +
{% endblock %} diff --git a/mnmlist/templates/category.html b/mnmlist/templates/category.html index 0f46062..b4709c4 100644 --- a/mnmlist/templates/category.html +++ b/mnmlist/templates/category.html @@ -1,44 +1,42 @@ {% extends "base.html" %} {% block content %} -{% if category in CATEGORIES_DESCRIPTION.keys() %} -

{{ CATEGORIES_DESCRIPTION[category][0] }} - -

-

{{ CATEGORIES_DESCRIPTION[category][1] }}

-{% else %} - -

{{ category }}

-{% endif %} -
- -{% for article in articles | batch(10) | first %} -
- {% if not HIDE_DATE %} - - {% endif %} - -

{{ article.title }}

- {% if article.headline %} - {{ article.headline }} + {% if category in CATEGORIES_DESCRIPTION.keys() %} +

+ {{ CATEGORIES_DESCRIPTION[category][0] }} + + + +

+

{{ CATEGORIES_DESCRIPTION[category][1] }}

{% else %} - {{ article.summary }} +

{{ category }}

{% endif %} -
- {% for tag in article.tags %} - {{ tag }}{% if not loop.last %}, {% endif %} - {% endfor %} -
-{% endfor %} -
    -{% for batch in articles | batch(10) %} - {% if not loop.first %} - {% for article in batch %} - -
  • {{ - article.title }}
  • - {% endfor %} - {% endif %} -{% endfor %} -
-
-{% endblock %} \ No newline at end of file +
+ {% if category != "lectures" %} +
    + {% for year, year_articles in articles | groupby('date.year') | reverse %} +

    {{ year }}

    + {% for article in year_articles %} + {{ article.title}}, + {% endfor %} + {% endfor %} +
+ {% else %} + {% for article in articles %} +
+ {% if article.category == "Lectures" and article.isbn_cover %} +
+ +
+ {% endif %} +

{{ article.title }}
par {{ article.author }}

+ {% if article.headline %} +

{{ article.headline }}

+ {% endif %} + +
+
+ {% endfor %} +
+{% endif %} +{% endblock %} diff --git a/mnmlist/templates/comments.html b/mnmlist/templates/comments.html index 0f58df6..8237f1d 100644 --- a/mnmlist/templates/comments.html +++ b/mnmlist/templates/comments.html @@ -1,7 +1,7 @@ {% if DISQUS_SITENAME %} -
-
- - + + {% endif %} diff --git a/mnmlist/templates/disqus_script.html b/mnmlist/templates/disqus_script.html index 23ec532..54504cf 100644 --- a/mnmlist/templates/disqus_script.html +++ b/mnmlist/templates/disqus_script.html @@ -1,5 +1,5 @@ {% if DISQUS_SITENAME %} - + {% endif %} diff --git a/mnmlist/templates/github.html b/mnmlist/templates/github.html index 75592ac..205cbd7 100644 --- a/mnmlist/templates/github.html +++ b/mnmlist/templates/github.html @@ -1,9 +1,19 @@ {% if GITHUB_URL %} - -{% if GITHUB_POSITION != "left" %} -Fork me on GitHub -{% else %} -Fork me on GitHub -{% endif %} - + + {% if GITHUB_POSITION != "left" %} + Fork me on GitHub + {% else %} + Fork me on GitHub + {% endif %} + {% endif %} diff --git a/mnmlist/templates/index.html b/mnmlist/templates/index.html index c36fa6c..d4428af 100644 --- a/mnmlist/templates/index.html +++ b/mnmlist/templates/index.html @@ -1,30 +1,36 @@ {% extends "base.html" %} {% block content %} -

{% block pagetitle %}{% endblock %}

-{% if articles %} -{% for article in articles | rejectattr("category", "in", ['weeknotes']) | batch(10) | first %} -
- {% if not HIDE_DATE %} - - {% endif %} - - {% for tag in article.tags %} - {{ tag }}{% if not loop.last %}, {% endif %} - {% endfor %} -

{{ article.title }}

- {% if article.headline %} - {{ article.headline }} - {% else %} - {{ article.summary }} - {% endif %} -
-{% endfor %} - - +

+ {% block pagetitle %}{% endblock %} +

+ {% if articles %} + {% for article in articles | rejectattr("category", "in", ['weeknotes']) | batch(10) | first %} +
+ {% if not HIDE_DATE %}{% endif %} + {% for tag in article.tags %} + {{ tag }} + {% if not loop.last %},{% endif %} + {% endfor %} +

+ {{ article.title }} +

+ {% if article.headline %} + {{ article.headline }} + {% else %} + {{ article.summary }} + {% endif %} +
+ {% endfor %} + + {% endif %} -{% endblock content %} \ No newline at end of file +{% endblock content %} diff --git a/mnmlist/templates/page.html b/mnmlist/templates/page.html index 598758c..1a5ebbf 100644 --- a/mnmlist/templates/page.html +++ b/mnmlist/templates/page.html @@ -1,9 +1,7 @@ {% extends "base.html" %} {% block title %}{{ page.title }} - {{ super() }}{% endblock %} {% block content %} -
-
-
- {{ page.content }} -
+
+
+
{{ page.content }}
{% endblock %} diff --git a/mnmlist/templates/pagination.html b/mnmlist/templates/pagination.html index 83c587a..c430b8a 100644 --- a/mnmlist/templates/pagination.html +++ b/mnmlist/templates/pagination.html @@ -1,15 +1,15 @@ {% if DEFAULT_PAGINATION %} -

- {% if articles_page.has_previous() %} - {% if articles_page.previous_page_number() == 1 %} - « - {% else %} - « +

+ {% if articles_page.has_previous() %} + {% if articles_page.previous_page_number() == 1 %} + « + {% else %} + « + {% endif %} {% endif %} - {% endif %} - Page {{ articles_page.number }} / {{ articles_paginator.num_pages }} - {% if articles_page.has_next() %} - » - {% endif %} -

+ Page {{ articles_page.number }} / {{ articles_paginator.num_pages }} + {% if articles_page.has_next() %} + » + {% endif %} +

{% endif %} diff --git a/mnmlist/templates/piwik.html b/mnmlist/templates/piwik.html index ff459af..f2ffc72 100644 --- a/mnmlist/templates/piwik.html +++ b/mnmlist/templates/piwik.html @@ -6,11 +6,19 @@ var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ PIWIK_URL }}/" : "http://{{ PIWIK_URL }}/"); {% endif %} document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); - + -{% endif %} \ No newline at end of file + + +{% endif %} diff --git a/mnmlist/templates/taglist.html b/mnmlist/templates/taglist.html index c792fd7..e42e6a5 100644 --- a/mnmlist/templates/taglist.html +++ b/mnmlist/templates/taglist.html @@ -1,2 +1,11 @@ -{% if article.tags %}

tags: {% for tag in article.tags %}{{ tag }}{% endfor %}

{% endif %} -{% if PDF_PROCESSOR %}

get the pdf

{% endif %} +{% if article.tags %} +

+ tags: + {% for tag in article.tags %}{{ tag }}{% endfor %} +

+{% endif %} +{% if PDF_PROCESSOR %} +

+ get the pdf +

+{% endif %} diff --git a/mnmlist/templates/tags.html b/mnmlist/templates/tags.html index ebcae75..e00832f 100644 --- a/mnmlist/templates/tags.html +++ b/mnmlist/templates/tags.html @@ -1,11 +1,10 @@ {% extends "base.html" %} {% block content %} -

Voici une liste de tous les tags utilisés sur ce site :

-
    - -{% for tag, articles in tags|sort(attribute='articles|length', reverse=true) %} - {{ tag }} -{% endfor %} -
+

Voici une liste de tous les tags utilisés sur ce site :

+
    + {% for tag, articles in tags|sort(attribute='articles|length', reverse=true) %} + {{ tag }} + {% endfor %} +
{% endblock %} - diff --git a/mnmlist/templates/translations.html b/mnmlist/templates/translations.html index 0079883..102aae4 100644 --- a/mnmlist/templates/translations.html +++ b/mnmlist/templates/translations.html @@ -1,5 +1,5 @@ {% if article.translations %} -Translations: + Translations: {% for translation in article.translations %} {{ translation.lang }} {% endfor %} diff --git a/mnmlist/templates/twitter.html b/mnmlist/templates/twitter.html index c6b159f..e706a8b 100644 --- a/mnmlist/templates/twitter.html +++ b/mnmlist/templates/twitter.html @@ -1,3 +1,6 @@ {% if TWITTER_USERNAME %} - -{% endif %} \ No newline at end of file + +{% endif %} diff --git a/mnmlist/templates/worklog.html b/mnmlist/templates/worklog.html index e2a2be9..27e1737 100644 --- a/mnmlist/templates/worklog.html +++ b/mnmlist/templates/worklog.html @@ -1,57 +1,57 @@ {% extends "page.html" %} {% block extra_head %} - - - + + + {% endblock extra_head %} {% block content %} -
-

{{ page.title }}

-
- 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) -
-
    -
  • {{ page.metadata.worklog['payed_hours'] }}h rémunérées
  • -
  • {{ page.metadata.worklog['volunteer_hours'] }}h bénévoles
  • -
- {% endif %} - - - - - - - - - - {% for month, amount in page.metadata.worklog.payed_monthly.items() %} - - - - - - {% endfor %} - -
MoisHeuresJours
{{ month }}{{ amount }}{{ (amount / 7.0) | round(1) }}
-
-
-
-
- {{ page.content }} -
- + {% endblock content %}