premier commit
This commit is contained in:
commit
d3a81473f7
89
Makefile
Normal file
89
Makefile
Normal file
|
@ -0,0 +1,89 @@
|
|||
PY?=python3
|
||||
PELICAN?=pelican
|
||||
PELICANOPTS=
|
||||
|
||||
BASEDIR=$(CURDIR)
|
||||
INPUTDIR=$(BASEDIR)/content
|
||||
OUTPUTDIR=$(BASEDIR)/output
|
||||
CONFFILE=$(BASEDIR)/pelicanconf.py
|
||||
PUBLISHCONF=$(BASEDIR)/publishconf.py
|
||||
|
||||
SSH_HOST=gnuragist.es
|
||||
SSH_PORT=22
|
||||
SSH_USER=admin
|
||||
SSH_TARGET_DIR=/var/www/my_webapp/www
|
||||
|
||||
|
||||
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 localhtml (re)generate the web site for local'
|
||||
@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 ' make ssh_upload upload the web site via SSH '
|
||||
@echo ' make rsync_upload upload the web site via rsync+ssh '
|
||||
@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 ' '
|
||||
|
||||
localhtml:
|
||||
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) --relative-urls
|
||||
|
||||
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)
|
||||
|
||||
ssh_upload: publish
|
||||
scp -P $(SSH_PORT) -r "$(OUTPUTDIR)"/* "$(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)"
|
||||
|
||||
rsync_upload: publish
|
||||
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --include tags --cvs-exclude --delete "$(OUTPUTDIR)"/ "$(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)"
|
||||
|
||||
|
||||
.PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload
|
62
README.md
Normal file
62
README.md
Normal file
|
@ -0,0 +1,62 @@
|
|||
# Gnuragistes
|
||||
|
||||
## Ressources
|
||||
|
||||
* [ForkAwsome cheatsheet](https://forkaweso.me/Fork-Awesome/cheatsheet/)
|
||||
* [Cool and responsive buttons](https://fdossena.com/?p=html5cool/buttons/i.frag)
|
||||
* [Jinja](https://jinja.palletsprojects.com/en/3.0.x/templates/)
|
||||
* [Pelican - templates and variables](https://docs.getpelican.com/en/latest/themes.html#templates-and-variables)
|
||||
|
||||
## Contenu
|
||||
|
||||
Sur le site …
|
||||
|
||||
- une page d'acceuil
|
||||
- des articles
|
||||
- des auteurs - qui sont potentiellement les gnuragistes
|
||||
- des mots clés
|
||||
- de quoi nous contacter
|
||||
|
||||
|
||||
## Menu
|
||||
|
||||
Sous forme de boutons, sans sous-menu, qui se mettent les uns à côté des autres.
|
||||
|
||||
### Links (dans le pelicanconf.py)
|
||||
|
||||
Les liens « statiques » sont définit dans `pelicanconf.py`.
|
||||
|
||||
### Catégories (comme Faimaison)
|
||||
|
||||
À découvrir : les mécanismes de Pelican.
|
||||
|
||||
|
||||
## Zone de titre(s)
|
||||
|
||||
- Un logo pour retourner sur la home page
|
||||
- Un titre
|
||||
- Un sous-titre
|
||||
|
||||
## Contenu
|
||||
|
||||
## Fork-Awsome
|
||||
|
||||
Puisque c'est un repo git qui se trouve dans `template/gnuragistes/static/css/Fork-Awesome`.
|
||||
|
||||
Pour éviter les problèmes, dans un premier temps le `.gitignore` contient ce chemin et le `pelicanconf.py` ignore aussi ce dossier grâce à `IGNORE_FILES = ['.git']`.
|
||||
|
||||
Il faudrait éventuellement approfondir le sujet en utilisant la notion de submodule ou subtree.
|
||||
|
||||
Voir : https://delicious-insights.com/fr/articles/git-submodules/
|
||||
|
||||
### Base
|
||||
|
||||
Se retrouve sur toutes les pages.
|
||||
|
||||
### Page d'acceuil
|
||||
|
||||
C'est pricipallement le fichier `template/gnuragistes/index.html` dont le contenu est pricipalement fait dans le template, mis à part quelques variables.
|
||||
|
||||
### Articles
|
||||
|
||||
C'est
|
Binary file not shown.
97
content/images/gnu/heckert_gnu_pink.svg
Normal file
97
content/images/gnu/heckert_gnu_pink.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 25 KiB |
BIN
content/images/home/map.png
Normal file
BIN
content/images/home/map.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 246 KiB |
BIN
content/images/home/zebras-sans-G-blanc.png
Normal file
BIN
content/images/home/zebras-sans-G-blanc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
BIN
content/images/linux/ewing-tux.png
Normal file
BIN
content/images/linux/ewing-tux.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
10
content/pages/contact.md
Normal file
10
content/pages/contact.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
Title: Contact
|
||||
ShortTitle: Contact
|
||||
Date: 2019-10-10
|
||||
Modified: 2021-07-04
|
||||
---
|
||||
|
||||
# Contact
|
||||
|
||||
help@guragist.es
|
34
content/pages/gnu.md
Normal file
34
content/pages/gnu.md
Normal file
|
@ -0,0 +1,34 @@
|
|||
---
|
||||
pagename: GNU is Not Unix
|
||||
title: GNU
|
||||
subtitle: GNU N'est pas Unix
|
||||
description: Mais c'est quoi un <a href="https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation" target="_blank">système d'exploitation</a> ?
|
||||
date: 2021-07-01
|
||||
modified: 2021-07-04
|
||||
---
|
||||
|
||||
<img src="/images/gnu/heckert_gnu_pink.svg" class="right" alt="Le dessin du gnou du projet GNU">
|
||||
|
||||
La [Tête de GNU](https://www.gnu.org/graphics/agnuhead.fr.html)<br />
|
||||
une image avec une longue histoire,<br />
|
||||
dessinée par Étienne Suvasa.
|
||||
|
||||
Depuis 1996,<br />
|
||||
elle accompagne la horde,<br />
|
||||
celles des gens qui font du libre,<br />
|
||||
une aventure, une passion,<br />
|
||||
un projet de société,<br />
|
||||
des logiciels émancipateurs,<br />
|
||||
du code source aux utilisateur·ice·s.
|
||||
|
||||
Les gnuragistes la voient en rose,<br />
|
||||
pour poursuivre avec vous,<br />
|
||||
son chemin, sa route, sa destinée,<br />
|
||||
vers une informatique plus juste et équitable.
|
||||
|
||||
<hr>
|
||||
|
||||
GNU est un [sigle récursif](https://fr.wikipedia.org/wiki/Sigle_r%C3%A9cursif) qui veut dire <i>GNU is Not Unix</i> et c'est un projet né en 1983.
|
||||
En 2021, nous sommes heureux·ses et fière d'articuler notre activité « digitale » autour des valeurs qui accompagnent ce projet.
|
||||
N'hésitez pas à flâner sur les pages Wikipédia du [projet GNU](https://fr.wikipedia.org/wiki/Projet_GNU) pour explorer une autre façon de faire de l'informatique.
|
||||
Nous en parlons volontiers avec vous et si vous avez besoin de nous, vous trouverez notre adresse mail et notre téléphone sur [la page d'accueil](.).
|
54
content/pages/home.md
Normal file
54
content/pages/home.md
Normal file
|
@ -0,0 +1,54 @@
|
|||
---
|
||||
pagename: Home
|
||||
title: GNUragistes !
|
||||
subtitle: Support Gnu/Linux - Réanimistes d'ordinateurs libres
|
||||
description: help@gnuragist.es - 0466/47.25.33
|
||||
date: 2019-10-10
|
||||
modified: 2021-07-04
|
||||
save_as: index.html
|
||||
---
|
||||
|
||||
<img src="/images/home/zebras-sans-G-blanc.png" class="right" alt="Logo en tête de zèbre"></a>
|
||||
gnuragistes,coucou<br />
|
||||
les gentil·le·s desrangé·e·s,<br />
|
||||
enragé·e·s du logiciel Libre,<br />
|
||||
dédient quelques moments<br />
|
||||
<br />
|
||||
à vous pointer<br />
|
||||
sur les dangers<br />
|
||||
des mafias gafam,<br />
|
||||
<br />
|
||||
à prendre des résolutions,<br />
|
||||
à chercher des vraies solutions,<br />
|
||||
en plus, sans trop dépenser.<br />
|
||||
<br />
|
||||
juste de questionner,<br />
|
||||
pourquoi autant de fortuné·e·s,<br />
|
||||
sollicitent avec passion,<br />
|
||||
votre temps et vos données.<br />
|
||||
<br />
|
||||
|
||||
<hr>
|
||||
|
||||
Un soucis, des questions, besoin d’aide avec votre [GNU](/gnu.html)/[Linux](/linux.html) ? Nous pouvons vous aider vous ou votre association. Mises à jour, sauvegardes, imprimantes, carte d’identité électronique, installation de votre serveur personnel ou associatif sur base de [Yunohost](https://yunohost.org) (Mail, [Nextcloud](https://fr.wikipedia.org/wiki/Nextcloud), Agendas, Contacts, [Dokuwiki](https://fr.wikipedia.org/wiki/DokuWiki)…)
|
||||
|
||||
<hr>
|
||||
|
||||
<a href="https://www.openstreetmap.org/way/228420463" target="_blank">
|
||||
<img src="/images/home/map.png" class="right" alt="Carte de Schaerbeek">
|
||||
</a>
|
||||
|
||||
Au [Hacklab](https://hacklab.brussels/)<br />
|
||||
Avenue Princesse Elisabeth 46 <br />
|
||||
1030 Schaerbeek
|
||||
|
||||
<p class="white">
|
||||
Devenez membres à prix libre.<br />
|
||||
Versement mensuel souhaité.<br />
|
||||
IBAN: BE63 5230 8118 2308<br />
|
||||
BIC: TRIOBEBB
|
||||
</p>
|
||||
|
||||
En semaine, la journée, le soir ou le week-end. et si vous avez envie de lire un truc, pourquoi pas la [biographie de RMS](/fichiers/Richard Stallman et la révolution du logiciel libre.pdf) ?
|
||||
|
||||
C'est maGNUfique!
|
38
content/pages/linux.md
Normal file
38
content/pages/linux.md
Normal file
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
pagename: Linux
|
||||
title: Linux
|
||||
subtitle: un noyau libre pour des logiciels libres
|
||||
description: Mais c'est quoi un <a href="https://fr.wikipedia.org/wiki/Noyau_de_syst%C3%A8me_d%27exploitation" target="_blank">noyau</a> ?
|
||||
date: 2021-07-01
|
||||
modified: 2021-07-04
|
||||
---
|
||||
|
||||
<img src="/images/linux/ewing-tux.png" class="right" alt="TUX, la mascote de linux, mais en rose"></a>
|
||||
|
||||
La mascotte de Linux,<br />
|
||||
c'est [Tux](https://fr.wikipedia.org/wiki/Tux),<br />
|
||||
un manchot mignon,<br />
|
||||
pour représenter un noyau costaud.</p>
|
||||
|
||||
[Linux](https://fr.wikipedia.org/wiki/Noyau_Linux) est dans vos ordiphones,<br />
|
||||
dans vos boxes Internet,<br />
|
||||
dans vos ordinateurs libres,<br />
|
||||
dans les serveurs du monde entier,<br />
|
||||
et même jusque Mars, dans le drône Ingenuity.
|
||||
|
||||
Un noyau de code,<br />
|
||||
qui fait germer des envies de liberté,<br />
|
||||
au cœur de tant de systèmes informatiques,<br />
|
||||
trop souvent ignoré, il vous invite à explorer.
|
||||
|
||||
Les [gnuragistes](.) le voient en rose,<br />
|
||||
pour poursuivre avec vous,<br />
|
||||
son chemin, sa route, sa destinée,<br />
|
||||
vers une informatique plus juste et équitable.
|
||||
|
||||
<hr>
|
||||
|
||||
Des milliers de contributeurs, trop peu de contributrices qui jonglent aves du code pour rendre possible le fonctionnement du matériel.
|
||||
Parce que oui, le rôle principal d'un noyau c'est de piloter l'électronique que vous avez entre le mains.
|
||||
[Depuis 1991](https://en.wikipedia.org/wiki/Linux_kernel_version_history), des individus, des constructeurs, des fondeurs, des organisations allant de l'entreprise capitaliste à l'association sans but lucratif, en passant par les fondations, [pondent des lignes de codes](https://git.kernel.org/).
|
||||
Pour eux, pour elles, pour nous, pour vous, sans se soucier de ce que vous en ferez. Il faut juste que ça fonctionne et que ce soit fiable.
|
10
content/projet/collectif.md
Normal file
10
content/projet/collectif.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
Title: Un projet collectif
|
||||
ShortTitle: Collectif
|
||||
Date: 2021-07-01
|
||||
Modified: 2021-07-04
|
||||
---
|
||||
|
||||
C'est ensemble, ou ce n'est pas.
|
||||
|
||||
Sieste, recherche et développement.
|
6
content/projet/gnuragistes.md
Normal file
6
content/projet/gnuragistes.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
Title: Le projet GNUragistes
|
||||
ShortTitle: Projet
|
||||
Date: 2021-07-01
|
||||
Modified: 2021-07-04
|
||||
|
||||
Le plus chouette projet de tout les temps !
|
58
pelicanconf.py
Normal file
58
pelicanconf.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*- #
|
||||
|
||||
TOOLBOX = False # Displays some variables from toolbox.html
|
||||
|
||||
AUTHOR = 'Gnuragistes'
|
||||
SITENAME = 'Gnuragist.es'
|
||||
SITEURL = 'https://gnuragist.es'
|
||||
|
||||
PATH = 'content'
|
||||
STATIC_PATHS = ['images','fichiers']
|
||||
PAGE_PATHS = ['pages']
|
||||
|
||||
TIMEZONE = 'Europe/Brussels'
|
||||
|
||||
DEFAULT_LANG = u'fr'
|
||||
|
||||
# Les fichiers produits sont mis dans des dossiers
|
||||
ARTICLE_URL = '/{category}/{slug}.html'
|
||||
ARTICLE_SAVE_AS = '{category}/{slug}.html'
|
||||
PAGE_SAVE_AS = '{slug}.html'
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
# Liens statiques utilisés dans le menu.
|
||||
# ('texte affiché','url','icone ForkAwsome')
|
||||
# Pour les icones ForkAwsome voir https://forkaweso.me/Fork-Awesome/cheatsheet/
|
||||
MENUITEMS = (('Home', './', 'fa-home'),
|
||||
('Wiki', 'https://wiki.gnuragist.es', 'fa-book'),
|
||||
('Git Sources', 'https://git.gnuragist.es/git/wildebeest/website','fa-gitea'),
|
||||
('Webmail', 'https://mamifere.gnuragist.es','fa-envelope'),
|
||||
('Pads', 'https://doc.gnuragist.es','fa-file-text'),
|
||||
('Forum', 'https://ps.zoethical.org/c/ps/gnuragistes/130','fa-activitypub'),)
|
||||
|
||||
# Social widget
|
||||
SOCIAL = (('You can add links in your config file', '#'),
|
||||
('Another social link', '#'),)
|
||||
|
||||
DEFAULT_PAGINATION = True
|
||||
|
||||
THEME = 'template/gnuragistes'
|
||||
|
||||
# Exclure des éléments inutiles… mais ça fonctionne pas ??
|
||||
#STATIC_EXCLUDES = ['template/gnuragistes/static/css/Fork-Awesome/.github', 'template/gnuragistes/static/css/Fork-Awesome/*']
|
||||
|
||||
# Uncomment following line if you want document-relative URLs when developing
|
||||
#RELATIVE_URLS = True
|
||||
|
||||
|
||||
DISPLAY_PAGES_ON_MENU = True
|
||||
# Pour ignorer le contenu de template/gnuragistes/static/css/Fork-Awesome/.git et tout ce qui est .git
|
||||
IGNORE_FILES = ['.git']
|
24
publishconf.py
Normal file
24
publishconf.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*- #
|
||||
|
||||
# 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 = 'https://gnuragist.es'
|
||||
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 = ""
|
131
tasks.py
Normal file
131
tasks.py
Normal file
|
@ -0,0 +1,131 @@
|
|||
# -*- 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
|
||||
|
||||
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'],
|
||||
# Remote server configuration
|
||||
'ssh_user': 'admin',
|
||||
'ssh_host': 'gnuragist.es',
|
||||
'ssh_port': '22',
|
||||
'ssh_path': '/var/www/my_webapp/www',
|
||||
# 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)
|
||||
|
||||
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)
|
||||
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))
|
1
template/gnuragistes/static/css/Fork-Awesome
Submodule
1
template/gnuragistes/static/css/Fork-Awesome
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 540fa1467f6381b6212635d9e7cc222cd1faa280
|
82
template/gnuragistes/static/css/classes.css
Normal file
82
template/gnuragistes/static/css/classes.css
Normal file
|
@ -0,0 +1,82 @@
|
|||
/* classes */
|
||||
|
||||
.toolbox
|
||||
{
|
||||
color:white;
|
||||
background-color: grey;
|
||||
position: fixed;
|
||||
overflow: hidden;
|
||||
z-index: 2400;
|
||||
opacity: 0.70;
|
||||
right: 0px;
|
||||
top: 0px !important;
|
||||
-webkit-transition: all 0.5s ease-in-out;
|
||||
-moz-transition: all 0.5s ease-in-out;
|
||||
-ms-transition: all 0.5s ease-in-out;
|
||||
-o-transition: all 0.5s ease-in-out;
|
||||
transition: all 0.5s ease-in-out;
|
||||
padding: 2em;
|
||||
}
|
||||
|
||||
.hide
|
||||
{
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.right
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
|
||||
.left
|
||||
{
|
||||
float: left;
|
||||
}
|
||||
|
||||
.white
|
||||
{
|
||||
color: white;
|
||||
}
|
||||
|
||||
.footer
|
||||
{
|
||||
color:magenta;
|
||||
}
|
||||
|
||||
a.button
|
||||
{
|
||||
display:inline-block;
|
||||
padding:0.35em 1.2em;
|
||||
/* border:0.1em solid magenta; */
|
||||
margin:0 0.3em 0.3em 0;
|
||||
border-radius:0.12em;
|
||||
box-sizing: border-box;
|
||||
text-decoration:none;
|
||||
color: lightgreen;
|
||||
text-align:center;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
a.button > i
|
||||
{
|
||||
padding-right: 0.5em;
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
a.button:hover, a:hover
|
||||
{
|
||||
color:#0F0F0F;
|
||||
background-color: lightgreen;
|
||||
}
|
||||
|
||||
a.button:hover > i
|
||||
{
|
||||
padding-right: 0.5em;
|
||||
color: #0F0F0F;
|
||||
}
|
||||
|
||||
a.selected
|
||||
{
|
||||
/* border:0.1em solid lightgreen; */
|
||||
}
|
||||
|
129
template/gnuragistes/static/css/gnuragistes.css
Normal file
129
template/gnuragistes/static/css/gnuragistes.css
Normal file
|
@ -0,0 +1,129 @@
|
|||
/* includes */
|
||||
@import "classes.css";
|
||||
@import "Fork-Awesome/css/fork-awesome.min.css";
|
||||
|
||||
/* fonts */
|
||||
@font-face
|
||||
{
|
||||
font-family: "OpenDyslexic";
|
||||
src: url("../fonts/OpenDyslexic-Regular.eot");
|
||||
src: url("../fonts/OpenDyslexic-Regular.woff") format("woff"),
|
||||
url("../fonts/OpenDyslexic-Regular.ttf") format("truetype"),
|
||||
url("../fonts/OpenDyslexic-Regular.svg") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* common html tags */
|
||||
body
|
||||
{
|
||||
background-color: #0F0F0F;
|
||||
font-family: OpenDyslexic;
|
||||
color: darkturquoise;
|
||||
max-width: 85%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 1rem;
|
||||
line-height: 3rem;
|
||||
/*background: linear-gradient(to left top, #0F0F0F, #000) fixed;*/
|
||||
}
|
||||
|
||||
ul
|
||||
{
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
min-height: 8vh;
|
||||
font-weight: bold;
|
||||
font-size: 2rem;
|
||||
list-style: none;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
li a,
|
||||
a
|
||||
{
|
||||
text-decoration: none;
|
||||
color: lightgreen;
|
||||
}
|
||||
|
||||
h1
|
||||
{
|
||||
font-size: 4rem;
|
||||
color: white;
|
||||
}
|
||||
|
||||
h2
|
||||
{
|
||||
font-size: 3rem;
|
||||
color: white;
|
||||
}
|
||||
|
||||
h3
|
||||
{
|
||||
font-size: 2rem;
|
||||
color: white;
|
||||
}
|
||||
|
||||
hr
|
||||
{
|
||||
border: 0.3rem solid grey;
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
|
||||
img
|
||||
{
|
||||
max-width: 50%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
p
|
||||
{
|
||||
font-size: 2rem;
|
||||
/*text-transform: uppercase;*/
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* for smaller screens transformations */
|
||||
@media (max-width: 1024px)
|
||||
{
|
||||
/* common html tags */
|
||||
body
|
||||
{
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
div
|
||||
{
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
h1
|
||||
{
|
||||
font-size: 4rem;
|
||||
}
|
||||
|
||||
h2
|
||||
{
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
h3
|
||||
{
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
img
|
||||
{
|
||||
max-width: 90%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
p
|
||||
{
|
||||
font-size: 2rem;
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
}
|
BIN
template/gnuragistes/static/fonts/OpenDyslexic-Regular.eot
Normal file
BIN
template/gnuragistes/static/fonts/OpenDyslexic-Regular.eot
Normal file
Binary file not shown.
BIN
template/gnuragistes/static/fonts/OpenDyslexic-Regular.otf
Normal file
BIN
template/gnuragistes/static/fonts/OpenDyslexic-Regular.otf
Normal file
Binary file not shown.
BIN
template/gnuragistes/static/fonts/OpenDyslexic-Regular.ttf
Normal file
BIN
template/gnuragistes/static/fonts/OpenDyslexic-Regular.ttf
Normal file
Binary file not shown.
BIN
template/gnuragistes/static/fonts/OpenDyslexic-Regular.woff
Normal file
BIN
template/gnuragistes/static/fonts/OpenDyslexic-Regular.woff
Normal file
Binary file not shown.
BIN
template/gnuragistes/static/images/zebras-favicon.png
Normal file
BIN
template/gnuragistes/static/images/zebras-favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
49
template/gnuragistes/templates/base.html
Normal file
49
template/gnuragistes/templates/base.html
Normal file
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="fr" dir="ltr">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{% block pagename %}{%endblock%} | {{SITENAME}}</title>
|
||||
<meta name="keywords" content="support gnu/linux, bruxelles, logiciels libres, collectif">
|
||||
<meta name="description" content="Gnuragistes, support GNU/Linux et collectivité" />
|
||||
<meta name="robots" content="archive,index,follow" />
|
||||
<link href="./theme/css/gnuragistes.css" rel="stylesheet" type="text/css" />
|
||||
<link rel="shortcut icon" href="./theme/images/zebras-favicon.png" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id=menu>
|
||||
{% for text, link, icon in MENUITEMS %}
|
||||
<a href="{{ link }}" class="button {% if text.lower() == page_name %}selected{% endif %}">
|
||||
{% if icon != "none" %}<i class="fa {{icon}}"></i>{% endif %}
|
||||
{{ text }}</a>
|
||||
{% endfor %}
|
||||
{% for menu_page in PAGES|sort(attribute='order')|rejectattr('hiddeninmenu') %}
|
||||
<a href="/{{ menu_page.url }}" class="button {% if page and page.shorttitle == menu_page.shorttitle %}selected{% endif %}">
|
||||
{{ menu_page.shorttitle }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<h1>{% block title %}{% endblock %}</h1>
|
||||
|
||||
<h2>{% block subtitle %}{% endblock %}</h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<h3>{% block description%}{% endblock %}</h3>
|
||||
|
||||
<div id="main">
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
||||
<div id="footer" class="footer">
|
||||
Copyleft 2021, les Gnuragistes.
|
||||
</div>
|
||||
|
||||
{% if TOOLBOX %}
|
||||
{% extends "toolbox.html" %}
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
9
template/gnuragistes/templates/page.html
Normal file
9
template/gnuragistes/templates/page.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
{% extends "base.html" %}
|
||||
{% block pagename %}{{ page.pagename }}{% endblock %}
|
||||
{% block title %}{{ page.title }}{% endblock %}
|
||||
{% block subtitle %}{{ page.subtitle }}{% endblock %}
|
||||
{% block description %}{{ page.description }}{% endblock %}
|
||||
{% block date %}{{ page.date | strftime('%a, %d %B %Y') }}{% endblock %}
|
||||
{% block author %}{{ page.author }}{% endblock %}
|
||||
{% block content %}{{ page.content }}{% endblock %}
|
||||
|
22
template/gnuragistes/templates/services.html
Normal file
22
template/gnuragistes/templates/services.html
Normal file
|
@ -0,0 +1,22 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}{{ article.shorttitle }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="node node-full node-page node-page--services">
|
||||
<h1>{{ article.title }}</h1>
|
||||
{{ article.content }}
|
||||
|
||||
<footer>
|
||||
<p class="services-common">
|
||||
Afin de bénéficier de ce service, il est nécessaire d'être <a href="/ressources/adherer.html">membre de l'association</a>,<br />
|
||||
puis de <a href="/pages/contact.html">contacter le bureau</a> pour demander l'abonnement à un service.
|
||||
</p>
|
||||
|
||||
<p class="services-return">
|
||||
<a href="/pages/services.html">
|
||||
<i class="fa fa-caret-left"></i> Tous les services proposés par FAImaison
|
||||
</a>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
{% endblock %}
|
6
template/gnuragistes/templates/toolbox.html
Normal file
6
template/gnuragistes/templates/toolbox.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
<div id="toolbox" class="toolbox">
|
||||
<b>Toolbox…</b><br />
|
||||
page_name = {{ page_name }}<br />
|
||||
output_file = {{ output_file }}<br />
|
||||
slug = {{ slug }}<br />
|
||||
</div>
|
Loading…
Reference in New Issue
Block a user