- créer un environnement virtuel python avec
python -m venv venv(oupython3 -m venv venv) - activer l'environnement virtuel avec
source venv/bin/activate - choisir dans
config.pyle mot clé (tag utilisé sur stylo) et si on veut un site avec ou sans caches - installer les dépendances avec
pip install -r requirements.txt - créer un fichier
env.pydans lequel rajoutermyToken =+ votre token stylo - faire tourner l'application avec
python app.py - produire des htmls statiques avec
python build.py
- créer un environnement virtuel python avec
python -m venv venv - activer l'environnement virtuel avec
source venv/bin/activate - choisir dans
config.pyle mot clé et si on veut un site avec ou sans caches make install: installer les dépendancesmake run: faire tourner le serveurmake build: produire les htmls statiques
Fondamentalement le site peux fonctionner de 3 manières différentes:
- En dynamique. En mettant
Truedans le champdynamicdansconfig.py. Le site est créé en dynamique (à savoir à chaque fois qu'une page est demandée). C'est cool, car le site affiché correspond à la version actuelle sur Stylo, en temps réel. Mais c'est très lent! Car tous les index sont créés en dynamique. - Avec des caches. En mettant
Falsedans le champdynamicdansconfig.py. Dans ce cas l'application d'abord récupère tous les fichiers qu'il lui sont nécessaires en json et ensuite elle sert le site en dynamique à partir de ces fichiers. Évidemment c,est beaucoup plus rapide, mais si on change quelque chose sur Stylo, il faut faire tourner à nouveau l'application pour que les fichiers json en local soit régénérés. - En statique: avec
python build.py(oumake build). En utilisant le librairiefreezetoutes les requetes sont faites et génèrent des HTML statiques. Supercool parce que superperenne! Certes, à chaque fois qu'on change quelque chose, il faut régénérer tous les HTML ;) - attention: cette fonctionnalité est encore un peu buggy. Il faudra la debugguer en ayant des véritables articles.
L'application parse tous les articles liés au propriétaire du token déclaré dans env.py. Elle sélectionne seulement les articles qui ont été tagué sur Stylo avec le tag mis dans config.py.
Actuellement l'url des articles est:
- si cela existe, l'id tel que déclaré dans le yaml, avec un plit sur
_. Donc, si l'id estblabla__01l'id pour l'application sera01et l'url de l'articlearticles/01.html - si l'id n'est pas renseigné dans le yaml (déconséillé!!): on utilisera l'id de stylo (la clé qu'on a dans l'url de l'article stylo)
- Installer graphql-playground
- inserer l'url:
https://stylo.huma-num.fr/graphql - éditer (en bas) le header en mettant:
{"Authorization": "Bearer votreToken"}
Maintenant, sur la droite il y a la doc de l'api.
Pour tester des queries, par exemple:
query
{
articles
{title
_id
workingVersion{
md
yaml
bib
}
}
}
Cette query renvoie la liste de tous les articles avec leur titre, id et le md + yaml + bibtex de la version de travail.
query
{
tags{_id name {articles{_id title}}}
}
pour avoir la liste des tags et de leur idi et des articles liés.
Actuellement le Flask fait des rêquetes à la volée. Mais j'ai fait un script qui récupère les articles en local et les écrit dans le dossier /sitestylo/articles en les nommant avec l'id renseigné dans le yaml (s'il existe) ou avec l'id article de stylo. Puisque l'id ne semble jamais renseigné (cf #1) c'est l'id stylo qui est utilisé. Pour tester retrievearticles.py, il suffit de: python retrievearticles.py (dans l'ennv virtuel évidemment)