first commit

This commit is contained in:
theo1 2024-02-13 14:27:26 +01:00
commit 050a431e97
46 changed files with 1748 additions and 0 deletions

72
Makefile Normal file
View File

@ -0,0 +1,72 @@
PY?=python3
PELICAN?=pelican
PELICANOPTS=
BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
endif
RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
SERVER ?= "0.0.0.0"
PORT ?= 0
ifneq ($(PORT), 0)
PELICANOPTS += -p $(PORT)
endif
help:
@echo 'Makefile for a pelican Web site '
@echo ' '
@echo 'Usage: '
@echo ' make html (re)generate the web site '
@echo ' make clean remove the generated files '
@echo ' make regenerate regenerate files upon modification '
@echo ' make publish generate using production settings '
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
@echo ' make devserver [PORT=8000] serve and regenerate together '
@echo ' make devserver-global regenerate and serve on 0.0.0.0 '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' '
html:
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
clean:
[ ! -d "$(OUTPUTDIR)" ] || rm -rf "$(OUTPUTDIR)"
regenerate:
"$(PELICAN)" -r "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve:
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve-global:
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b $(SERVER)
devserver:
"$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
devserver-global:
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -b 0.0.0.0
publish:
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(PUBLISHCONF)" $(PELICANOPTS)
.PHONY: html help clean regenerate serve serve-global devserver publish

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,45 @@
Title: Newsletter - Février 2024
Author: Chambéry Contraception Thermique
Date: 12/04/2023
Category: Newsletters
Slug: newsletter-fev-2024
## On lance un collectif !
Nous nous sommes retrouvé⋅es à quelques personnes faisant l'expérience de la contraception testiculaire thermique. C'est une méthode (détaillée un peu plus bas) qui permet de se contracepter quand on a un pénis.
Aujourd'hui, dans les couples hétéros, la charge contraceptive repose entièrement sur les femmes. On inculque aux femmes dès leur plus jeune âge que c'est à elle de se débrouiller pour éviter les grossesses non désirées, et la contraception reste largement un impensé pour les hommes cis. Pourtant les conséquences sur la santé des femmes des moyens de contraceptions les plus répendus (pillule hormonales, sterilets…) sont parfois sévères.
La méthode thermique n'est pas parfaite pour tout le monde, et elle ne vise en aucun cas à remplacer les méthodes existentes. Mais c'est une méthode fiable, réversible et peu onéreuse, qui peut permettre une gestion plus égalitaire de la charge contraceptive, pour une sexualité plus libre et responsable. Alors, on en parle ?
Ce collectif vise à parler de cette méthode, par des réunions d'informations, et au travers d'ateliers sur la place que prend la contraception dans nos vies, dans les rapports de genre, dans nos sexualités. Nous communiquerons principalement via cette liste mail, dans un premier temps du moins. Si tu connais des gens que ça pourrait intéresser, [pour s'inscrire c'est ici](https://framagroupes.org/sympa/subscribe/contraception_thermique_chambery).
Si tu as des questions, tu peux aussi directement nous contacter à **ctt_chambery@protonmail.com**.
## La contraception thermique, c'est quoi ?
La contraception testiculaire thermique est un moyen **fiable** et **réversible** de se contracepter quand on a un pénis. Il fonctionne sur un principe très simple : la température normale du corps étant légèrement plus élevée que celle des testicules, elle suffit à interrompre la **spermatogénèse**, c'est-à-dire le processus de production de spermatozoïdes.
Il est donc possible, au moyen d'un dispositif adapté (il en existe de plusieurs sortes), de se contracepter en gardant ses testicules "au chaud". Il suffit de le porter 15h par jour, ce n'est ni douloureux, ni désagréable. On vérifie régulièrement l'efficacité du port du dispositif au moyen de **spermogrammes**.
Pour tout savoir sur la contraception thermique, son fonctionnement biologique et le protocole à suivre, tu peux te rendre [sur ce site](https://contraceptionthermique.noblogs.org/introduction/).
## Les ateliers à venir
Les dates seront précisées bientôt.
**Mars** : Projection du documentaire "Haut les couilles" de Sidonie Hardoux.
**Avril** : Cercle de parole : quelle place prend la contraception dans nos vies ?
**Mai** : Réunion d'information autour de la contraception thermique.
**Juin** : Réunion d'information et partie de jeu de société "Le cœur des zobs", réalisé par le collectif marseillais 13ticule.
**Juillet** (peut-être) : Atelier couture de jockstrap.
Les ateliers sont ouverts à toustes, peu importe le genre ou le niveau de connaissance sur la contraception thermique. Tu peux venir pour toi, pour un⋅e ami⋅e, seul⋅e ou accompagné⋅e… Tu seras lea bienvenu⋅e !
## Les actualités

9
content/pages/contact.md Normal file
View File

@ -0,0 +1,9 @@
Title: Contact
Author: Chambéry Contraception Thermique
Date: 12/04/2023
Category: Pages
Slug: contact
Envie de discuter ? Besoin de conseils ? Des questions ?
N'hésite pas à nous contacter à **ctt_chambery@protonmail.com**, on te répondra dès que possible.

40
content/pages/index.md Normal file
View File

@ -0,0 +1,40 @@
Title: Index
Author: Chambéry Contraception Thermique
Date: 12/04/2023
Category: Pages
Slug: index
Hidden: True
## La contraception testiculaire thermique, qu'est-ce que c'est ?
La contraception testiculaire thermique est un moyen **fiable** et **réversible** de se contracepter quand on a un pénis. Il fonctionne sur un principe très simple : la température normale du corps étant légèrement plus élevée que celle des testicules, elle suffit à interrompre la **spermatogénèse**, c'est-à-dire le processus de production de spermatozoïdes.
Il est donc possible, au moyen d'un dispositif adapté (il en existe de plusieurs sortes), de se contracepter en gardant ses testicules "au chaud" à l'intérieur du corps. Il suffit de porter ce dispositif 15h par jour, ce n'est ni douloureux, ni désagréable. On vérifie régulièrement l'efficacité du port du dispositif au moyen de **spermogrammes**.
L'adoption de cette méthode doit être discutée au sein du couple le cas échéant, et le protocole être suivi avec sérieux pour éviter les grossesses non désirées.
Pour en savoir plus sur la contraception thermique, son fonctionnement biologique et le protocole à suivre, tu peux te rendre [sur ce site](https://contraceptionthermique.noblogs.org/introduction/).
## Sur Chambéry
**Médecins** : Nous essayons de répertorier le personnel médical formé au suivi de la contraception thermique sur Chambéry (pour faire les ordonnances de spermogrammes, interprêter les résultats, faire les palpations…).
Si tu connais quelqu'un⋅e de bien, tu peux nous en faire part en [nous contactant](./contact.md).
**Spermogrammes** : Tu peux faire tes spermogrammes au [laboratoire Biogroup Tercinet](https://laboratoires.biogroup.fr/savoie/chambery/5-rue-favre), au 5 rue Favre dans le centre ([RDV sur Doctolib](https://www.doctolib.fr/laboratoire/chambery/biogroup-laboschambery-site-de-tercinet-amp)). Il te faut une ordonnance pour la prise en charge sécu. La part mutuelle (à ta charge si tu n'en as pas) est d'environ 14€.
En attendant, si tu as des questions ou besoin de conseils, tu peux nous envoyer un mail ou nous voir à nos ateliers. Tu peux te tenir au courant des actualités sur la contraception testiculaire à Chambéry [en t'inscrivant à notre newsletter](https://framagroupes.org/sympa/subscribe/contraception_thermique_chambery).
## Ressources
Beaucoup de sites rassemblent des informations sur la contraception thermique, son protocole, les précautions à prendre, des témoignages de personnes contraceptées, etc.
Nous on aime bien :
* [contraceptionthermique.noblogs.org](https://contraceptionthermique.noblogs.org/), qui ont édité le livre "S'occuper de son sperme". C'est une source d'info très complète pour commencer. Le livre est disponible gratuitement en version web sur le site.
* [Le site d'Otoko](https://samflam.notion.site/samflam/Otoko-Contraception-Autonome-93fd30b3034d465096fc939959ce01d8), initiative parisienne. Sam propose aussi des ateliers à prix libre sur Paris pour fabriquer son anneau contraceptif en silicone.
* [Le site de Thoreme](https://thoreme.com/), l'entreprise qui commercialise l'androswitch. Tu pourras y trouver des conseils sur le port de l'anneau, mais aussi des informations plus générales sur la contraception testiculaire, et des ressources à communiquer aux médecins pour ton premier rendez-vous.
… et y'en a plein d'autres !

54
output/archives.html Normal file
View File

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique - Archives</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<h1>Archives for Chambéry Contraception Thermique</h1>
<dl>
<dt>lun. 04 décembre 2023</dt>
<dd><a href="/newsletter-fev-2024.html">Newsletter - Février 2024</a></dd>
</dl>
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

View File

@ -0,0 +1,73 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique - Articles by Chambéry Contraception Thermique</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<h2>La contraception testiculaire thermique, qu'est-ce que c'est ?</h2>
<p>La contraception testiculaire thermique est un moyen <strong>fiable</strong> et <strong>réversible</strong> de se contracepter quand on a un pénis. Il fonctionne sur un principe très simple : la température normale du corps étant légèrement plus élevée que celle des testicules, elle suffit à interrompre la <strong>spermatogénèse</strong>, c'est-à-dire le processus de production de spermatozoïdes.</p>
<p>Il est donc possible, au moyen d'un dispositif adapté (il en existe de plusieurs sortes), de se contracepter en gardant ses testicules "au chaud" à l'intérieur du corps. Il suffit de porter ce dispositif 15h par jour, ce n'est ni douloureux, ni désagréable. On vérifie régulièrement l'efficacité du port du dispositif au moyen de <strong>spermogrammes</strong>.</p>
<p>L'adoption de cette méthode doit être discutée au sein du couple le cas échéant, et le protocole être suivi avec sérieux pour éviter les grossesses non désirées.</p>
<p>Pour en savoir plus sur la contraception thermique, son fonctionnement biologique et le protocole à suivre, tu peux te rendre <a href="https://contraceptionthermique.noblogs.org/introduction/">sur ce site</a>.</p>
<h2>Sur Chambéry</h2>
<p><strong>Médecins</strong> : Nous essayons de répertorier le personnel médical formé au suivi de la contraception thermique sur Chambéry (pour faire les ordonnances de spermogrammes, interprêter les résultats, faire les palpations…).</p>
<p>Si tu connais quelqu'un⋅e de bien, tu peux nous en faire part en <a href="./contact.md">nous contactant</a>.</p>
<p><strong>Spermogrammes</strong> : Tu peux faire tes spermogrammes au <a href="https://laboratoires.biogroup.fr/savoie/chambery/5-rue-favre">laboratoire Biogroup Tercinet</a>, au 5 rue Favre dans le centre (<a href="https://www.doctolib.fr/laboratoire/chambery/biogroup-laboschambery-site-de-tercinet-amp">RDV sur Doctolib</a>). Il te faut une ordonnance pour la prise en charge sécu. La part mutuelle (à ta charge si tu n'en as pas) est d'environ 14€.</p>
<p>En attendant, si tu as des questions ou besoin de conseils, tu peux nous envoyer un mail ou nous voir à nos ateliers. Tu peux te tenir au courant des actualités sur la contraception testiculaire à Chambéry <a href="https://framagroupes.org/sympa/subscribe/contraception_thermique_chambery">en t'inscrivant à notre newsletter</a>.</p>
<h2>Ressources</h2>
<p>Beaucoup de sites rassemblent des informations sur la contraception thermique, son protocole, les précautions à prendre, des témoignages de personnes contraceptées, etc.</p>
<p>Nous on aime bien :</p>
<ul>
<li>
<p><a href="https://contraceptionthermique.noblogs.org/">contraceptionthermique.noblogs.org</a>, qui ont édité le livre "S'occuper de son sperme". C'est une source d'info très complète pour commencer. Le livre est disponible gratuitement en version web sur le site.</p>
</li>
<li>
<p><a href="https://samflam.notion.site/samflam/Otoko-Contraception-Autonome-93fd30b3034d465096fc939959ce01d8">Le site d'Otoko</a>, initiative parisienne. Sam propose aussi des ateliers à prix libre sur Paris pour fabriquer son anneau contraceptif en silicone.</p>
</li>
<li>
<p><a href="https://thoreme.com/">Le site de Thoreme</a>, l'entreprise qui commercialise l'androswitch. Tu pourras y trouver des conseils sur le port de l'anneau, mais aussi des informations plus générales sur la contraception testiculaire, et des ressources à communiquer aux médecins pour ton premier rendez-vous.</p>
</li>
</ul>
<p>… et y'en a plein d'autres !</p>
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

52
output/authors.html Normal file
View File

@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique - Authors</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<h1>Authors on Chambéry Contraception Thermique</h1>
<ul>
<li><a href="/author/chambery-contraception-thermique.html">Chambéry Contraception Thermique</a> (1)</li>
</ul>
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

52
output/categories.html Normal file
View File

@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique - Categories</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<h1>Categories on Chambéry Contraception Thermique</h1>
<ul>
<li><a href="/category/newsletters.html">Newsletters</a> (1)</li>
</ul>
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

View File

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<ul>
<li><a href="/newsletter-fev-2024.html">Newsletter - Février 2024</a></li>
</ul>
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Newsletter Chambéry Contraception Thermique</title><link href="/" rel="alternate"></link><link href="/feeds/all.atom.xml" rel="self"></link><id>/</id><updated>2024-02-12T21:46:27Z</updated></feed>

73
output/index.html Normal file
View File

@ -0,0 +1,73 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" class="edito_content" >
<h2>La contraception testiculaire thermique, qu'est-ce que c'est ?</h2>
<p>La contraception testiculaire thermique est un moyen <strong>fiable</strong> et <strong>réversible</strong> de se contracepter quand on a un pénis. Il fonctionne sur un principe très simple : la température normale du corps étant légèrement plus élevée que celle des testicules, elle suffit à interrompre la <strong>spermatogénèse</strong>, c'est-à-dire le processus de production de spermatozoïdes.</p>
<p>Il est donc possible, au moyen d'un dispositif adapté (il en existe de plusieurs sortes), de se contracepter en gardant ses testicules "au chaud" à l'intérieur du corps. Il suffit de porter ce dispositif 15h par jour, ce n'est ni douloureux, ni désagréable. On vérifie régulièrement l'efficacité du port du dispositif au moyen de <strong>spermogrammes</strong>.</p>
<p>L'adoption de cette méthode doit être discutée au sein du couple le cas échéant, et le protocole être suivi avec sérieux pour éviter les grossesses non désirées.</p>
<p>Pour en savoir plus sur la contraception thermique, son fonctionnement biologique et le protocole à suivre, tu peux te rendre <a href="https://contraceptionthermique.noblogs.org/introduction/">sur ce site</a>.</p>
<h2>Sur Chambéry</h2>
<p><strong>Médecins</strong> : Nous essayons de répertorier le personnel médical formé au suivi de la contraception thermique sur Chambéry (pour faire les ordonnances de spermogrammes, interprêter les résultats, faire les palpations…).</p>
<p>Si tu connais quelqu'un⋅e de bien, tu peux nous en faire part en <a href="./contact.md">nous contactant</a>.</p>
<p><strong>Spermogrammes</strong> : Tu peux faire tes spermogrammes au <a href="https://laboratoires.biogroup.fr/savoie/chambery/5-rue-favre">laboratoire Biogroup Tercinet</a>, au 5 rue Favre dans le centre (<a href="https://www.doctolib.fr/laboratoire/chambery/biogroup-laboschambery-site-de-tercinet-amp">RDV sur Doctolib</a>). Il te faut une ordonnance pour la prise en charge sécu. La part mutuelle (à ta charge si tu n'en as pas) est d'environ 14€.</p>
<p>En attendant, si tu as des questions ou besoin de conseils, tu peux nous envoyer un mail ou nous voir à nos ateliers. Tu peux te tenir au courant des actualités sur la contraception testiculaire à Chambéry <a href="https://framagroupes.org/sympa/subscribe/contraception_thermique_chambery">en t'inscrivant à notre newsletter</a>.</p>
<h2>Ressources</h2>
<p>Beaucoup de sites rassemblent des informations sur la contraception thermique, son protocole, les précautions à prendre, des témoignages de personnes contraceptées, etc.</p>
<p>Nous on aime bien :</p>
<ul>
<li>
<p><a href="https://contraceptionthermique.noblogs.org/">contraceptionthermique.noblogs.org</a>, qui ont édité le livre "S'occuper de son sperme". C'est une source d'info très complète pour commencer. Le livre est disponible gratuitement en version web sur le site.</p>
</li>
<li>
<p><a href="https://samflam.notion.site/samflam/Otoko-Contraception-Autonome-93fd30b3034d465096fc939959ce01d8">Le site d'Otoko</a>, initiative parisienne. Sam propose aussi des ateliers à prix libre sur Paris pour fabriquer son anneau contraceptif en silicone.</p>
</li>
<li>
<p><a href="https://thoreme.com/">Le site de Thoreme</a>, l'entreprise qui commercialise l'androswitch. Tu pourras y trouver des conseils sur le port de l'anneau, mais aussi des informations plus générales sur la contraception testiculaire, et des ressources à communiquer aux médecins pour ton premier rendez-vous.</p>
</li>
</ul>
<p>… et y'en a plein d'autres !</p>
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

View File

@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique - Newsletter - Février 2024</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<header>
<h2 class="entry-title">Newsletter - Février 2024</h2>
</header>
<div class="entry-content ">
<h2>On lance un collectif !</h2>
<p>Nous nous sommes retrouvé⋅es à quelques personnes faisant l'expérience de la contraception testiculaire thermique. C'est une méthode (détaillée un peu plus bas) qui permet de se contracepter quand on a un pénis.</p>
<p>Aujourd'hui, dans les couples hétéros, la charge contraceptive repose entièrement sur les femmes. On inculque aux femmes dès leur plus jeune âge que c'est à elle de se débrouiller pour éviter les grossesses non désirées, et la contraception reste largement un impensé pour les hommes cis. Pourtant les conséquences sur la santé des femmes des moyens de contraceptions les plus répendus (pillule hormonales, sterilets…) sont parfois sévères.</p>
<p>La méthode thermique n'est pas parfaite pour tout le monde, et elle ne vise en aucun cas à remplacer les méthodes existentes. Mais c'est une méthode fiable, réversible et peu onéreuse, qui peut permettre une gestion plus égalitaire de la charge contraceptive, pour une sexualité plus libre et responsable. Alors, on en parle ?</p>
<p>Ce collectif vise à parler de cette méthode, par des réunions d'informations, et au travers d'ateliers sur la place que prend la contraception dans nos vies, dans les rapports de genre, dans nos sexualités. Nous communiquerons principalement via cette liste mail, dans un premier temps du moins. Si tu connais des gens que ça pourrait intéresser, <a href="https://framagroupes.org/sympa/subscribe/contraception_thermique_chambery">pour s'inscrire c'est ici</a>.</p>
<p>Si tu as des questions, tu peux aussi directement nous contacter à <strong>ctt_chambery@protonmail.com</strong>.</p>
<h2>La contraception thermique, c'est quoi ?</h2>
<p>La contraception testiculaire thermique est un moyen <strong>fiable</strong> et <strong>réversible</strong> de se contracepter quand on a un pénis. Il fonctionne sur un principe très simple : la température normale du corps étant légèrement plus élevée que celle des testicules, elle suffit à interrompre la <strong>spermatogénèse</strong>, c'est-à-dire le processus de production de spermatozoïdes.</p>
<p>Il est donc possible, au moyen d'un dispositif adapté (il en existe de plusieurs sortes), de se contracepter en gardant ses testicules "au chaud". Il suffit de le porter 15h par jour, ce n'est ni douloureux, ni désagréable. On vérifie régulièrement l'efficacité du port du dispositif au moyen de <strong>spermogrammes</strong>.</p>
<p>Pour tout savoir sur la contraception thermique, son fonctionnement biologique et le protocole à suivre, tu peux te rendre <a href="https://contraceptionthermique.noblogs.org/introduction/">sur ce site</a>.</p>
<h2>Les ateliers à venir</h2>
<p>Les dates seront précisées bientôt.</p>
<p><strong>Mars</strong> : Projection du documentaire "Haut les couilles" de Sidonie Hardoux.</p>
<p><strong>Avril</strong> : Cercle de parole : quelle place prend la contraception dans nos vies ?</p>
<p><strong>Mai</strong> : Réunion d'information autour de la contraception thermique.</p>
<p><strong>Juin</strong> : Réunion d'information et partie de jeu de société "Le cœur des zobs", réalisé par le collectif marseillais 13ticule.</p>
<p><strong>Juillet</strong> (peut-être) : Atelier couture de jockstrap.</p>
<p>Les ateliers sont ouverts à toustes, peu importe le genre ou le niveau de connaissance sur la contraception thermique. Tu peux venir pour toi, pour un⋅e ami⋅e, seul⋅e ou accompagné⋅e… Tu seras lea bienvenu⋅e !</p>
<h2>Les actualités</h2>
</div><!-- /.entry-content -->
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

56
output/pages/contact.html Normal file
View File

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique - Contact</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<h1>Contact</h1>
<div class="page-images">
<p>Envie de discuter ? Besoin de conseils ? Des questions ?</p>
<p>N'hésite pas à nous contacter à <strong>ctt_chambery@protonmail.com</strong>, on te répondra dès que possible.</p>
</div>
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

79
output/pages/index.html Normal file
View File

@ -0,0 +1,79 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique - Index</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<h1>Index</h1>
<div class="page-images">
<h2>La contraception testiculaire thermique, qu'est-ce que c'est ?</h2>
<p>La contraception testiculaire thermique est un moyen <strong>fiable</strong> et <strong>réversible</strong> de se contracepter quand on a un pénis. Il fonctionne sur un principe très simple : la température normale du corps étant légèrement plus élevée que celle des testicules, elle suffit à interrompre la <strong>spermatogénèse</strong>, c'est-à-dire le processus de production de spermatozoïdes.</p>
<p>Il est donc possible, au moyen d'un dispositif adapté (il en existe de plusieurs sortes), de se contracepter en gardant ses testicules "au chaud" à l'intérieur du corps. Il suffit de porter ce dispositif 15h par jour, ce n'est ni douloureux, ni désagréable. On vérifie régulièrement l'efficacité du port du dispositif au moyen de <strong>spermogrammes</strong>.</p>
<p>L'adoption de cette méthode doit être discutée au sein du couple le cas échéant, et le protocole être suivi avec sérieux pour éviter les grossesses non désirées.</p>
<p>Pour en savoir plus sur la contraception thermique, son fonctionnement biologique et le protocole à suivre, tu peux te rendre <a href="https://contraceptionthermique.noblogs.org/introduction/">sur ce site</a>.</p>
<h2>Sur Chambéry</h2>
<p><strong>Médecins</strong> : Nous essayons de répertorier le personnel médical formé au suivi de la contraception thermique sur Chambéry (pour faire les ordonnances de spermogrammes, interprêter les résultats, faire les palpations…).</p>
<p>Si tu connais quelqu'un⋅e de bien, tu peux nous en faire part en <a href="./contact.md">nous contactant</a>.</p>
<p><strong>Spermogrammes</strong> : Tu peux faire tes spermogrammes au <a href="https://laboratoires.biogroup.fr/savoie/chambery/5-rue-favre">laboratoire Biogroup Tercinet</a>, au 5 rue Favre dans le centre (<a href="https://www.doctolib.fr/laboratoire/chambery/biogroup-laboschambery-site-de-tercinet-amp">RDV sur Doctolib</a>). Il te faut une ordonnance pour la prise en charge sécu. La part mutuelle (à ta charge si tu n'en as pas) est d'environ 14€.</p>
<p>En attendant, si tu as des questions ou besoin de conseils, tu peux nous envoyer un mail ou nous voir à nos ateliers. Tu peux te tenir au courant des actualités sur la contraception testiculaire à Chambéry <a href="https://framagroupes.org/sympa/subscribe/contraception_thermique_chambery">en t'inscrivant à notre newsletter</a>.</p>
<h2>Ressources</h2>
<p>Beaucoup de sites rassemblent des informations sur la contraception thermique, son protocole, les précautions à prendre, des témoignages de personnes contraceptées, etc.</p>
<p>Nous on aime bien :</p>
<ul>
<li>
<p><a href="https://contraceptionthermique.noblogs.org/">contraceptionthermique.noblogs.org</a>, qui ont édité le livre "S'occuper de son sperme". C'est une source d'info très complète pour commencer. Le livre est disponible gratuitement en version web sur le site.</p>
</li>
<li>
<p><a href="https://samflam.notion.site/samflam/Otoko-Contraception-Autonome-93fd30b3034d465096fc939959ce01d8">Le site d'Otoko</a>, initiative parisienne. Sam propose aussi des ateliers à prix libre sur Paris pour fabriquer son anneau contraceptif en silicone.</p>
</li>
<li>
<p><a href="https://thoreme.com/">Le site de Thoreme</a>, l'entreprise qui commercialise l'androswitch. Tu pourras y trouver des conseils sur le port de l'anneau, mais aussi des informations plus générales sur la contraception testiculaire, et des ressources à communiquer aux médecins pour ton premier rendez-vous.</p>
</li>
</ul>
<p>… et y'en a plein d'autres !</p>
</div>
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

View File

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique - Contact</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<h1>Contact</h1>
<div class="page-images">
</div>
</section>
</div>
</body>
</html>

51
output/tags.html Normal file
View File

@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Chambéry Contraception Thermique - Tags</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link rel='icon' href='/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/theme/css/main.css">
<link rel="stylesheet" href="/theme/css/fonts.css">
<link rel="stylesheet" href="/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="/">Chambéry Contraception Thermique</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box"""></div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" >
<h1>Tags for Chambéry Contraception Thermique</h1>
<ul>
</ul>
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="">Accueil</a>
</li>
<h4>Newsletters</h4>
<li>
<a href="/newsletter-fev-2024.html"> Newsletter - Février 2024</a>
</li>
<hr>
<a href="/pages/contact.html">Contact</a>
</ul>
</nav>
</div>
</body>
</html>

View File

@ -0,0 +1,22 @@
@font-face {
font-family: "Compagnon";
src: url('fonts/Compagnon-Roman.otf');
}
@font-face {
font-family: "Cantarell";
src: url('fonts/Cantarell-Light.otf')
}
h1, h2, h3, h4, .entry-title, .footnote, #content h3, nav h2 {
font-family: "Compagnon";
}
#site-subtitle {
font-family: 'Cantarell';
font-weight: bold;
}
#content, nav, #about {
font-family: 'Cantarell';
}

Binary file not shown.

View File

@ -0,0 +1,94 @@
Copyright (c) 2012 by Sorkin Type Co (www.sorkintype.com), with Reserved Font Name "Amarante".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,34 @@
img {
max-width: 100%;
}
.edito_content {
background-image: url("/images/couverture_scred.jpg");
background-repeat: no-repeat;
background-size: 100%;
}
.small-images img, .page-images img {
width: 6em;
padding: 2em;
}
.small-images p:nth-of-type(odd) img{
float: right;
}
.small-images p:nth-of-type(even) img{
float: left;
}
.page-images img{
float: right
}
@media (max-width: 900px) {
.small-images img {
width: 100%;
padding: 1em 0 1em 0;
}
}

132
output/theme/css/main.css Normal file
View File

@ -0,0 +1,132 @@
/* TODO :
* fonts
*
*/
:root {
--main-color:#4f3677;
}
h1 {
text-align: center;
}
header a{
text-decoration: none;
color: black;
}
h2 {
font-size: 2em;
line-height: initial;
}
#site-subtitle {
text-align: center;
font-size: 1em;
}
#flex-container {
display: flex;
flex-direction: row;
}
#content {
padding-left: 10%;
padding-right: 10%;
max-width: 50%;
font-size: 1.5em;
line-height: 35px;
text-align: justify;
text-justify: auto;
}
#content h3 {
background-image: url("/images/underline.png");
background-position: 0em -1em;
background-repeat: no-repeat ;
}
#about {
text-align: center;
}
.entry-title {
text-align: center;
}
.footnote {
font-size: .7em;
}
.footnote {
color: var(--main-color);
}
.footnote li::marker {
color: black;
}
nav {
max-width: 40%;
padding-right: 10%;
font-size: 1.2em;
line-height: 35px;
}
nav a {
text-decoration: none;
color: black;
}
nav a:hover {
text-decoration: underline;
color: var(--main-color)
}
.footnote-ref {
color: var(--main-color)
}
footer {
padding: 50px;
}
/* Responsive layout - makes a one column layout instead of a two-column layout */
@media (max-width: 900px) {
#flex-container {
flex-direction: column;
}
#content {
max-width: 100%;
text-align: left;
}
h2 {
font-size: 1.7em;
}
nav {
max-width: 100%;
padding-left: 10%;
padding-right: 10%;
}
nav a {
color: black;
text-decoration: underline;
text-decoration-style: dotted;
}
nav li {
margin: 1em;
}
h2, h3 {
word-break: break-word;
hyphens: auto;
}
}

33
pelicanconf.py Normal file
View File

@ -0,0 +1,33 @@
AUTHOR = 'Chambéry Contraception Thermique'
SITENAME = 'Chambéry Contraception Thermique'
SITEURL = ''
PATH = 'content'
TIMEZONE = 'Europe/Rome'
DEFAULT_LANG = 'fr'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
THEME = 'themes/contraception'
# Blogroll
LINKS = (('Pelican', 'https://getpelican.com/'),
('Python.org', 'https://www.python.org/'),
('Jinja2', 'https://palletsprojects.com/p/jinja/'),
('You can modify those links in your config file', '#'),)
# Social widget
SOCIAL = (('You can add links in your config file', '#'),
('Another social link', '#'),)
DEFAULT_PAGINATION = 10
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True

21
publishconf.py Normal file
View File

@ -0,0 +1,21 @@
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
import os
import sys
sys.path.append(os.curdir)
from pelicanconf import *
# If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL = ''
RELATIVE_URLS = False
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
DELETE_OUTPUT_DIRECTORY = True
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
#GOOGLE_ANALYTICS = ""

138
tasks.py Normal file
View File

@ -0,0 +1,138 @@
# -*- coding: utf-8 -*-
import os
import shlex
import shutil
import sys
import datetime
from invoke import task
from invoke.main import program
from invoke.util import cd
from pelican import main as pelican_main
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
from pelican.settings import DEFAULT_CONFIG, get_settings_from_file
OPEN_BROWSER_ON_SERVE = True
SETTINGS_FILE_BASE = 'pelicanconf.py'
SETTINGS = {}
SETTINGS.update(DEFAULT_CONFIG)
LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE)
SETTINGS.update(LOCAL_SETTINGS)
CONFIG = {
'settings_base': SETTINGS_FILE_BASE,
'settings_publish': 'publishconf.py',
# Output path. Can be absolute or relative to tasks.py. Default: 'output'
'deploy_path': SETTINGS['OUTPUT_PATH'],
# Host and port for `serve`
'host': 'localhost',
'port': 8000,
}
@task
def clean(c):
"""Remove generated files"""
if os.path.isdir(CONFIG['deploy_path']):
shutil.rmtree(CONFIG['deploy_path'])
os.makedirs(CONFIG['deploy_path'])
@task
def build(c):
"""Build local version of site"""
pelican_run('-s {settings_base}'.format(**CONFIG))
@task
def rebuild(c):
"""`build` with the delete switch"""
pelican_run('-d -s {settings_base}'.format(**CONFIG))
@task
def regenerate(c):
"""Automatically regenerate site upon file modification"""
pelican_run('-r -s {settings_base}'.format(**CONFIG))
@task
def serve(c):
"""Serve site at http://$HOST:$PORT/ (default is localhost:8000)"""
class AddressReuseTCPServer(RootedHTTPServer):
allow_reuse_address = True
server = AddressReuseTCPServer(
CONFIG['deploy_path'],
(CONFIG['host'], CONFIG['port']),
ComplexHTTPRequestHandler)
if OPEN_BROWSER_ON_SERVE:
# Open site in default browser
import webbrowser
webbrowser.open("http://{host}:{port}".format(**CONFIG))
sys.stderr.write('Serving at {host}:{port} ...\n'.format(**CONFIG))
server.serve_forever()
@task
def reserve(c):
"""`build`, then `serve`"""
build(c)
serve(c)
@task
def preview(c):
"""Build production version of site"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
@task
def livereload(c):
"""Automatically reload browser tab upon file modification."""
from livereload import Server
def cached_build():
cmd = '-s {settings_base} -e CACHE_CONTENT=True LOAD_CONTENT_CACHE=True'
pelican_run(cmd.format(**CONFIG))
cached_build()
server = Server()
theme_path = SETTINGS['THEME']
watched_globs = [
CONFIG['settings_base'],
'{}/templates/**/*.html'.format(theme_path),
]
content_file_extensions = ['.md', '.rst']
for extension in content_file_extensions:
content_glob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension)
watched_globs.append(content_glob)
static_file_extensions = ['.css', '.js']
for extension in static_file_extensions:
static_file_glob = '{0}/static/**/*{1}'.format(theme_path, extension)
watched_globs.append(static_file_glob)
for glob in watched_globs:
server.watch(glob, cached_build)
if OPEN_BROWSER_ON_SERVE:
# Open site in default browser
import webbrowser
webbrowser.open("http://{host}:{port}".format(**CONFIG))
server.serve(host=CONFIG['host'], port=CONFIG['port'], root=CONFIG['deploy_path'])
@task
def publish(c):
"""Publish to production via rsync"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
c.run(
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
'-e "ssh -p {ssh_port}" '
'{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
CONFIG['deploy_path'].rstrip('/') + '/',
**CONFIG))
def pelican_run(cmd):
cmd += ' ' + program.core.remainder # allows to pass-through args to pelican
pelican_main(shlex.split(cmd))

View File

@ -0,0 +1,22 @@
@font-face {
font-family: "Compagnon";
src: url('fonts/Compagnon-Roman.otf');
}
@font-face {
font-family: "Cantarell";
src: url('fonts/Cantarell-Light.otf')
}
h1, h2, h3, h4, .entry-title, .footnote, #content h3, nav h2 {
font-family: "Compagnon";
}
#site-subtitle {
font-family: 'Cantarell';
font-weight: bold;
}
#content, nav, #about {
font-family: 'Cantarell';
}

View File

@ -0,0 +1,34 @@
img {
max-width: 100%;
}
.edito_content {
background-image: url("/images/couverture_scred.jpg");
background-repeat: no-repeat;
background-size: 100%;
}
.small-images img, .page-images img {
width: 6em;
padding: 2em;
}
.small-images p:nth-of-type(odd) img{
float: right;
}
.small-images p:nth-of-type(even) img{
float: left;
}
.page-images img{
float: right
}
@media (max-width: 900px) {
.small-images img {
width: 100%;
padding: 1em 0 1em 0;
}
}

View File

@ -0,0 +1,132 @@
/* TODO :
* fonts
*
*/
:root {
--main-color:#4f3677;
}
h1 {
text-align: center;
}
header a{
text-decoration: none;
color: black;
}
h2 {
font-size: 2em;
line-height: initial;
}
#site-subtitle {
text-align: center;
font-size: 1em;
}
#flex-container {
display: flex;
flex-direction: row;
}
#content {
padding-left: 10%;
padding-right: 10%;
max-width: 50%;
font-size: 1.5em;
line-height: 35px;
text-align: justify;
text-justify: auto;
}
#content h3 {
background-image: url("/images/underline.png");
background-position: 0em -1em;
background-repeat: no-repeat ;
}
#about {
text-align: center;
}
.entry-title {
text-align: center;
}
.footnote {
font-size: .7em;
}
.footnote {
color: var(--main-color);
}
.footnote li::marker {
color: black;
}
nav {
max-width: 40%;
padding-right: 10%;
font-size: 1.2em;
line-height: 35px;
}
nav a {
text-decoration: none;
color: black;
}
nav a:hover {
text-decoration: underline;
color: var(--main-color)
}
.footnote-ref {
color: var(--main-color)
}
footer {
padding: 50px;
}
/* Responsive layout - makes a one column layout instead of a two-column layout */
@media (max-width: 900px) {
#flex-container {
flex-direction: column;
}
#content {
max-width: 100%;
text-align: left;
}
h2 {
font-size: 1.7em;
}
nav {
max-width: 100%;
padding-left: 10%;
padding-right: 10%;
}
nav a {
color: black;
text-decoration: underline;
text-decoration-style: dotted;
}
nav li {
margin: 1em;
}
h2, h3 {
word-break: break-word;
hyphens: auto;
}
}

View File

@ -0,0 +1,14 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Archives{% endblock %}
{% block content %}
<h1>Archives for {{ SITENAME }}</h1>
<dl>
{% for article in dates %}
<dt>{{ article.locale_date }}</dt>
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
{% endfor %}
</dl>
{% endblock %}

View File

@ -0,0 +1,33 @@
{% extends "base.html" %}
{% block html_lang %}{{ article.lang }}{% endblock %}
{% block title %}{{ SITENAME }} - {{ article.title|striptags }}{% endblock %}
{% block head %}
{{ super() }}
{% import 'translations.html' as translations with context %}
{% if translations.entry_hreflang(article) %}
{{ translations.entry_hreflang(article) }}
{% endif %}
{% if article.description %}
<meta name="description" content="{{article.description}}" />
{% endif %}
{% for tag in article.tags %}
<meta name="tags" content="{{tag}}" />
{% endfor %}
{% endblock %}
{% block content %}
<header>
<h2 class="entry-title">{{ article.title }}</h2>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(article) }}
</header>
<div class="entry-content {% if article.small_images %} small-images {% endif %}">
{{ article.content }}
</div><!-- /.entry-content -->
{% endblock %}

View File

@ -0,0 +1,8 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} - Articles by {{ author }}{% endblock %}
{% block content_title %}
<h2>Articles by {{ author }}</h2>
{% endblock %}

View File

@ -0,0 +1,12 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Authors{% endblock %}
{% block content %}
<h1>Authors on {{ SITENAME }}</h1>
<ul>
{% for author, articles in authors|sort %}
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
{% endblock %}

View File

@ -0,0 +1,84 @@
<!DOCTYPE html>
<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock html_lang %}">
<head>
{% block head %}
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
{% endif %}
{% if FEED_ATOM %}
<link href="{{ FEED_DOMAIN }}/{%if FEED_ATOM_URL %}{{ FEED_ATOM_URL }}{% else %}{{ FEED_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
{% endif %}
{% if FEED_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_RSS_URL %}{{ FEED_RSS_URL }}{% else %}{{ FEED_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
{% endif %}
{% if CATEGORY_FEED_ATOM and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_ATOM_URL %}{{ CATEGORY_FEED_ATOM_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_ATOM.format(slug=category.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
{% endif %}
{% if CATEGORY_FEED_RSS and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_RSS_URL %}{{ CATEGORY_FEED_RSS_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_RSS.format(slug=category.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
{% endif %}
{% if TAG_FEED_ATOM and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_ATOM_URL %}{{ TAG_FEED_ATOM_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_ATOM.format(slug=tag.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
{% endif %}
{% if TAG_FEED_RSS and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_RSS_URL %}{{ TAG_FEED_RSS_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_RSS.format(slug=tag.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
{% endif %}
{% endblock head %}
<link rel='icon' href='{{ SITE_URL }}/images/icon.jpg' type='images/png'/ >
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="{{SITE_URL}}/theme/css/main.css">
<link rel="stylesheet" href="{{SITE_URL}}/theme/css/fonts.css">
<link rel="stylesheet" href="{{SITE_URL}}/theme/css/images.css">
</head>
<body id="index" class="home">
<header class="banner">
<h1><a href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>
<h2 id='site-subtitle'><div class="subtitle-box""">{% if SITESUBTITLE %}{{ SITESUBTITLE }}{% endif %}</div></h2>
</header><!-- /#banner -->
<div id="flex-container">
<section id="content" {% if output_file=='index.html'%} class="edito_content" {% endif %}>
{% block content %}
{% endblock %}
</section>
<nav>
<h3>Contenu du site : </h3>
<ul>
<li>
<a href="{{ SITE_URL }}">Accueil</a>
</li>
{% for category in categories %}
<h4>{{ category[0] }}</h4>
{% for article in category[1] %}
<li>
<a href="{{ SITE_URL }}/{{ article.url }}"> {{ article.title }}</a>
</li>
{% endfor %}
{% endfor %}
<hr>
{% for page in pages %}
{% if page.hidden!='True' %}
<a href="{{SITE_URL}}/{{ page.url }}">{{page.title}}</a>
{% endif %}
{% endfor %}
</ul>
</nav>
</div>
</body>
</html>

View File

@ -0,0 +1,11 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Categories{% endblock %}
{% block content %}
<h1>Categories on {{ SITENAME }}</h1>
<ul>
{% for category, articles in categories|sort %}
<li><a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
{% endblock %}

View File

@ -0,0 +1,11 @@
{% extends "base.html" %}
{% block content %}
<ul>
{% for article in articles %}
<li><a href="{{SITE_URL}}/{{ article.url }}">{{ article.title }}</a></li>
{% endfor %}
</ul>
{% endblock content %}

View File

@ -0,0 +1,9 @@
{% extends "base.html" %}
{% block content %}
{% for page in pages %}
{% if page.slug == 'index'%}
{{page.content }}
{% endif %}
{% endfor %}
{% endblock content %}

View File

@ -0,0 +1,27 @@
{% extends "base.html" %}
{% block html_lang %}{{ page.lang }}{% endblock %}
{% block title %}{{ SITENAME }} - {{ page.title|striptags }}{%endblock%}
{% block head %}
{{ super() }}
{% import 'translations.html' as translations with context %}
{% if translations.entry_hreflang(page) %}
{{ translations.entry_hreflang(page) }}
{% endif %}
{% endblock %}
{% block content %}
<h1>{{ page.title }}</h1>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(page) }}
<div class="page-images">
{{ page.content }}
</div>
{% if page.modified %}
<p>
Last updated: {{ page.locale_modified }}
</p>
{% endif %}
{% endblock %}

View File

@ -0,0 +1,15 @@
{% if DEFAULT_PAGINATION %}
{% set first_page = articles_paginator.page(1) %}
{% set last_page = articles_paginator.page(articles_paginator.num_pages) %}
<p class="paginator">
{% if articles_page.has_previous() %}
<a href="{{ SITEURL }}/{{ first_page.url }}">&#8647;</a>
<a href="{{ SITEURL }}/{{ articles_previous_page.url }}">&laquo;</a>
{% endif %}
Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
{% if articles_page.has_next() %}
<a href="{{ SITEURL }}/{{ articles_next_page.url }}">&raquo;</a>
<a href="{{ SITEURL }}/{{ last_page.url }}">&#8649;</a>
{% endif %}
</p>
{% endif %}

View File

@ -0,0 +1,7 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} - {{ tag }} tag{% endblock %}
{% block content_title %}
<h2>Articles tagged with {{ tag }}</h2>
{% endblock %}

View File

@ -0,0 +1,12 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Tags{% endblock %}
{% block content %}
<h1>Tags for {{ SITENAME }}</h1>
<ul>
{% for tag, articles in tags|sort %}
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% macro translations_for(article) %}
{% if article.translations %}
Translations:
{% for translation in article.translations %}
<a href="{{ SITEURL }}/{{ translation.url }}" hreflang="{{ translation.lang }}">{{ translation.lang }}</a>
{% endfor %}
{% endif %}
{% endmacro %}
{% macro entry_hreflang(entry) %}
{% if entry.translations %}
{% for translation in entry.translations %}
<link rel="alternate" hreflang="{{ translation.lang }}" href="{{ SITEURL }}/{{ translation.url }}">
{% endfor %}
{% endif %}
{% endmacro %}