notes en vrac
- fonctionne avec chrome et avec safari
- implémente grid
il faut importer vue.js et axios.js explicitement dans la vue (template)
- auth google
voir les credentials dans https://console.cloud.google.com/
section API
projet py4web myclientapp
BUG avec compte de bob
workaround
modif de ~/admin/backup/2023-12-08/files/.local/lib/python3.11/site-packages/py4web/utils/auth_plugins/__init__.py
sauvegardé dans /home/kriko/tests/docker/py4web/bulblok_dev/backup
A reporter en cas d'upgrade de py4web
groupe dans table auth_user_tag_default
- shell depuis le container ( depuis parent de apps)
py4web shell apps
- connexion a la dB
from apps._default import db
- pour requetes et les mises à jour
query
q=db.memoire.id >1
maj
db(q).update(owner=1)
db.commit()
- aggregats
count=db.memoire.id.count()
nb=db().select(db.memoire.notebook, count,groupby=db.memoire.notebook)
- jointures
bonne lutte
entre autres du au fait qu'il faut caster les champs avant de requeter dans mon cas
Query :
w=db.memoire.notebook.cast(cast_as='integer',length=None)==db.notebook.id
rem : cast nécessaire que sur notebook
requete complete
print(db(w).select(db.memoire.id,db.notebook.name,orderby=db.memoire.id))
rem :
- cast demande un type et une longueur. pour integer None suffit. pour string important.
- orderby semble nécessaire
- utiliser la forme '._select' pour voir ce que ca donne avec postgresql
puis tester avec psql - un peu lourd ...
selectionner docker comme database
finir les requetes par ;
ex : select memoire.id,notebook.name from memoire,notebook where memoire.notebook=notebook.id::text ;
ici cast en text
- javascript sa mère
- se mefier de console.log dans axios. le mettre dans le retour
ex :x=axios.get(callback_url,{params: {"selitems_fordeletion": JSON.stringify(checkedElements) }}).then((result) => {this.nbdeleted=result.data.nbde;console.log(this.nbdeleted);}); - convertir un tableau js pour que py4web l'utilise ; convertir avec json.strinify(array)
sessions
les server side sessions pour conserver variables
mise en place : dans settings.py indiquer database.
test en cours avec sqlite.
le moyen de memoriser :
session['counter']= session.get("counter", 0) + 10
c'est bizarre.
- il semble que le session.get cree la structure qui permet de memoriser
- sssion['count']= est indispensable pour mémoriser. session.count est à oublier
Reinit
pour la partie dev si on perd la DB c'est chiant.
pour repartir proprement :
- supprimer le repertoire postgres-data
- verifier que les settings de migrate sont à False (les 2)
- dc up -d
- copier le fichier à restaurer dans /tmp
par exemple 20240219_224308.tar
dans tools
./restore_postgres.sh 20240219_224308.tar
-aller dans admin/dashboard : reload les applis
- se reconnecter
___
au passage.
pas de fichiers dans databases à part sql.log
verifier que les settings de migrate sont à False (les 2)
testé ca doit marcher pour un redemarrage
todo ( 10 dec)
ReplyDeletefaire la partie update
- regarder render pour le html
- regarder si pas mieux optimiser en gardant l'id du notebook pluto que son nom
gerer la grille qui permet de gerer les notebook - saisir un nouveau notebook.
ReplyDeletedoit on gerer l'unicité du nom ? pas sûr ...