Thursday, September 3, 2026

memo la suite

 On reprend quelques années plus tard avec l'aide de notre ami Gemini

Il faut reconnaître que ça va plus vite

Le mot de passe d'admin c'est az

Pour le récupérer il faut faire quelques manipulations le plus simple que j'ai trouvé c'est de repousser le fichier admin_sec_password à son emplacement sinon ça demande des manipulations un an plus finir parce que le mot de passe élu dans le fichier déjà crypté et puis placer dans un secret de cœur donc il faut accéder au container bref c'est galère


Le mot de passe de user kriko c'est ganja

Pour le récupérer faut aller bidouiller en base de données

Au travers du shell dans le container

venv/bin/py4web shell apps/_default

puis

(InteractiveConsole)

>>> from apps.common import db , auth

from apps.common import db , auth


from pydal.validators import CRYPT # 1. Récupérer l'utilisateur 

user = db(db.auth_user.email == "stephane.krikorian@gmail.com").select().first() 

# 2. Hacher explicitement le mot de passe 

crypt = CRYPT() 

hashed_password = str(crypt("NouveauMotDePasse123")[0]) 

# Vérification : hashed_password doit maintenant commencer par "pbkdf2:..." ou "sha512:..." 

print(hashed_password) 

# 3. Mettre à jour et enregistrer 

user.update_record(password=hashed_password)

db.commit()


--------------

pour creer le user


user_id = db.auth_user.insert(

    username = "kriko",

    email="stephane.krikorian@gmail.com",

    first_name="Stéphane",

    last_name="Krikorian",

    sso_id="",  # Sera mis à jour automatiquement par Google SSO lors du prochain login

)

db.commit()

print(f"Utilisateur créé avec l'ID : {user_id}")

puis faire la manip avec le mot de passe chiffré (voir avant)


Notes importantes

1/ pour filtrer qui se connecte il ne faut pas ajouter de controle dans le code genre 

    #if "manager" not in groups.get(auth.get_user()["id"]):

    #    redirect(URL("auth/logout"))

ou bien 

    #if "manager" not in groups.get(auth.get_user()["id"]):

    #    redirect(URL("not_authorized"))

c'est la fixture qui regle cela
@action.uses("index.html", auth, T, auth.user)

2/ j'ai du modifier (gemini) l'enregistrement du plugin dans common.py
pour qu'il demande un user et non pas utiliser toujours le meme.
il faut surcharger le plugin
            # Ajoute le paramètre à la fin de la query string
            return url + "&prompt=select_account"

a voir si ca ne le fait pas car c'est du spécifique.

----------------

données migrate etc ...
Une incompatibilité de version avec une version trop ancienne de postgres on fait tourner en rond pendant longtemps.
La mécanique que je comprends un peu mieux est la suivante

Ce qui est défini dans le fichier models.py est dans le langage py4web e c'est-à-dire en pydal.
Pour faire une bonne migration de données il faut laisser le flag migrate= True 
Et supprimer tous les fichiers databases/nomdela table.table

Le démarrage du serveur py4web il recrée physiquement dans la base de données postgres
Il y a aussi un flag fake_migrate à n'utiliser qu'une seule fois si il gueule parce que la table est déjà présente. 
Et un fonctionnement plus simple pour maintenir en synchro l'abstraction py4web et la base de données

-----------------
sur alwaysdata

1/ pour réinitialiser le mot de passe se connecter sur pytest
Faire un py4web set_password si on l'a oublié, tuer les procèss et redémarrer le site
Ainsi que le fichier password.txt se trouve bien au-dessus du répertoire apps
Ça doit bien marcher après
2/ je fais une montée de version Python 3.14
Pour éviter le problème d'espace disque j'ai passé la rotation des logs à 5 jours dans l'interface d'admin dans la partie advanced. On verra si ça fonctionne sinon il faudra ouvrir un ticket
Ensuite j'ai dû modifier dans environnement la version de Python 
J'ai supprimé à la main dans le répertoire. Local/ lib tous les modules python installés (site-packages)
Ensuite j'ai fait l'installation avec pip de py4web et de psycopg2
python3 -m pip install --upgrade py4web --no-cache-dir --user
python3 -m pip install --upgrade psycopg2 --no-cache-dir --user 


No comments:

Post a Comment

model routing

 https://towardsdatascience.com/the-hidden-cost-of-llm-routing-why-switching-models-costs-more/?utm_campaign=tds%20daily&utm_medium=emai...