Monday, November 6, 2023

memo.kriko.online

 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 :
  1. cast demande un type et une longueur. pour integer None suffit. pour string important.
  2. orderby semble nécessaire
  3. 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


2 comments:

  1. todo ( 10 dec)
    faire la partie update

    - regarder render pour le html
    - regarder si pas mieux optimiser en gardant l'id du notebook pluto que son nom

    ReplyDelete
  2. gerer la grille qui permet de gerer les notebook - saisir un nouveau notebook.
    doit on gerer l'unicité du nom ? pas sûr ...

    ReplyDelete

Ma journée du 01 Décembre 2025

En ce premier jour de décembre, l'heure est venue, De conter une histoire, par les dés soutenue. Quinze dés ont roulé, offrant leur dest...