libreosteo / LibreOsteo

Open Source software for osteopathes
GNU General Public License v3.0
30 stars 18 forks source link

Comptabilité non_field_errors #271

Closed Hernando82 closed 3 years ago

Hernando82 commented 3 years ago

Bonjour,

Pouvez vous m'aider, je ne peux pas valider le réglement de mes consultations. Le choix du mode de réglement (CB, espèces ou chèque) n'apparait pas. Comment puis-je débloquer la situation ? (ma machine est sous Linux Mint ) Merci :)

jbgury commented 3 years ago

Bonjour, Comment avez vous installé LibreOsteo sur Linux Mint ? Avez vous suivi le tuto d'installation sur Ubuntu ? Est ce une installation via Docker ? Il s'agit d'un problème sur votre machine, ce problème n'est pas reproductible sur le produit. Il y a sans doute une étape manquante dans votre installation.

Si installation depuis les sources, vous pouvez suivre ce lien : https://blog.cambiatech.com/2020/10/22/installation-sous-ubuntu/ Si installation avec Docker, est ce une base de données déportée ?

jbgury commented 3 years ago

Pas de retour à ce sujet, est-ce résolu?

Hernando82 commented 3 years ago

Bonjour, Désolé je vous avais répondu par mail.

C'est bien une installation par Docker en restaurant une base de donnée qui provenait de mon ancienne machine qui avait ce problème de compta mais elle a rendu l'ame avant que je ne puisse me préocuper du problème. Mon problème n'est pas résolu.

jbgury commented 3 years ago

C'est une hypothèse mais il semble que des données soient manquantes avec la restauration de la nouvelle base. Lors de la restauration de l'ancienne base de données, les nouvelles données insérées notamment les moyens de paiement ont été effacés, car l'ancienne base de données n'était pas dans la même version. C'est un prérequis à la restauration de base. C'est la raison pour laquelle vous êtes en échec à présent. Face à cette situation il faudrait ajouter les données manquantes qui doivent être identifiées. Il ne devrait y avoir que la définition des moyens de paiements. Pour réinsérer les données, cette commande est à exécuter pour Docker :

docker exec -it $(docker container ls | grep libreosteo | cut -f 1 -d ' ') sh ./manage.py shell

 from libreosteoweb.models import PaimentMean
 for pm in [('check', 'Chèque', True), ('cash', 'Espèces', True),
               ('ecard', 'Carte Bancaire', False)]:
        pm_db = PaimentMean(code=pm[0], text=pm[1], enable=pm[2])
        pm_db.save()

Une fois le script copié, il faut appuyer sur entrée pour l'exécution. Sans erreur, on doit obtenir les 3 chevrons : >>>

Alors vous pouvez taper : exit() ou Control+D et fermer la console ou encore Control+D

jbgury commented 3 years ago

Bonjour, Désolé je vous avais répondu par mail.

Quel mail ?

Hernando82 commented 3 years ago

Cela ne fonctionne pas j'obtiens :

~$ ./manage.py shell from libreosteoweb.models import PaimentMean bash: ./manage.py: Aucun fichier ou dossier de ce type ~$ for pm in [('check', 'Chèque', True), ('cash', 'Espèces', True), bash: erreur de syntaxe près du symbole inattendu « ( » ~$ ('ecard', 'Carte Bancaire', False)]: bash: erreur de syntaxe près du symbole inattendu « ]: » ~$ pm_db = PaimentMean(code=pm[0], text=pm[1], enable=pm[2]) bash: erreur de syntaxe près du symbole inattendu « ( » ~$ pm_db.save()

jbgury commented 3 years ago

Bonjour,

La saisie est mauvaise, il faut saisir ligne par ligne. En détaillant ça vous donne ceci : ~$ docker exec -it $(docker container ls | grep libreosteo | cut -f 1 -d ' ') sh Si vous avez une erreur liée à un privilège nécessaire vous pouvez saisir sudo devant la commande. ~$ sudo docker exec -it $(docker container ls | grep libreosteo | cut -f 1 -d ' ') sh Votre mot de passe sera alors demandé pour confirmer l'élévation de privilège

Vous entrez alors dans le contexte d'exécution docker de LibreOsteo : /Libreosteo #

A présent il faut saisir : ./manage.py shell Vous obtenez alors : >>>

Et à présent copier coller la série suivante :

from libreosteoweb.models import PaimentMean
 for pm in [('check', 'Chèque', True), ('cash', 'Espèces', True),
               ('ecard', 'Carte Bancaire', False)]:
        pm_db = PaimentMean(code=pm[0], text=pm[1], enable=pm[2])
        pm_db.save()

Faire entrez pour avoir à nouveau >>>

Quitter deux fois (Ctrl+D deux fois, pour quitter le shell, quitter le contexte docker)

jbgury commented 3 years ago

Est ce que vous avez pu saisir les commandes comme indiqués ? La situation doit être stable à présent, non ?

Hernando82 commented 3 years ago

Bonjour,

Je n'ai pas réussis à débloquer la situation voila ce que j'obtiens

hernando@hernando-OCTO:~$ sudo docker exec -it $(docker container ls | grep libreosteo | cut -f 1 -d ' ') sh Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json: dial unix /var/run/docker.sock: connect: permission denied [sudo] Mot de passe de hernando :
"docker exec" requires at least 2 arguments. See 'docker exec --help'.

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container hernando@hernando-OCTO:~$ /Libreosteo # bash: /Libreosteo: Aucun fichier ou dossier de ce type

jbgury commented 3 years ago

Ok, mea culpa, je pense que le sudo pour docker est nécessaire partout pour vous.... sudo docker exec -it $(sudo docker container ls | grep libreosteo | cut -f 1 -d ' ') sh

ensuite vous n'avez pas à saisir /Libreosteo #

c'est le contexte qui s'affichera une fois la première commande correctement aboutie.... C'est dans ce contexte qu'il faudra saisir ./manage.py shell

jbgury commented 3 years ago

Bonjour, je reviens aux nouvelles, vous avez réussi avec la commande actualisée ?

Hernando82 commented 3 years ago

Bonjour, J'obtiens exactement la même réponse :

hernando@hernando-OCTO:~$ sudo docker exec -it $(sudo docker container ls | grep libreosteo | cut -f 1 -d ' ') sh [sudo] Mot de passe de hernando :
"docker exec" requires at least 2 arguments. See 'docker exec --help'.

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

jbgury commented 3 years ago

Bonjour, pas facile de suivre ce qu'il se passe sur votre installation. Je vous propose de découper étape par étape. Ce qui serait bien, c'est d'avoir un retour efficace et rapide sur les commandes, sinon votre problème traîne et traîne encore. Si c'est possible. Merci

On va commencer par identifier le nom utilisé sur votre machine pour l'exécution de libreosteo : sudo docker container ls

Il doit afficher une ligne de résultat avec la colonne "NAMES". J'ai supposé que c'était libreosteo dans une installation standard, mais visiblement chez vous ça ne donne pas ça.

Prenez le nom donné dans la colonne "NAMES"

puis lancez la commande suivante en remplaçant le "prod_libreosteo_1" par le nom obtenu dans votre colonne NAMES.

sudo docker exec -it prod_libreosteo_1 sh

Si cela ne fonctionne toujours pas, vous pouvez prendre l'identifiant obtenu dans la première colonne "CONTAINER_ID" il devrait être unique, à la place du nom (c'est le résultat de la sous-commande d'avant : sudo docker container ls | cut -f 1 -d ' '

A l'issue de cette commande vous obtenez une ligne dans le conteneur LibreOsteo : /Libreosteo #

A présent il faut saisir : ./manage.py shell Vous obtenez alors en dernière ligne : >>>

Et à présent copier coller la série suivante :

from libreosteoweb.models import PaimentMean
for pm in [('check', 'Chèque', True), ('cash', 'Espèces', True),
               ('ecard', 'Carte Bancaire', False)]:
        pm_db = PaimentMean(code=pm[0], text=pm[1], enable=pm[2])
        pm_db.save()

Faire entrez pour avoir à nouveau >>>

Taper: exit() ou faire CTRL+D Taper encore mais sans les parenthèse :+1: exit ou bien faire une seconde fois CTRL+D

Si vous avez une erreur à une quelconque de ces étapes, merci de donner le résultat de chaque étape jusqu'à l'erreur, sinon c'est impossible de bien cibler votre problème, comme on le voit par les échanges précédents.

Hernando82 commented 3 years ago

Désolé du temps que j'ai mis entre les réponses, merci de m'aider :)

Les colonnes sont vides : hernando@hernando-OCTO: ~$ sudo docker container ls [sudo] Mot de passe de hernando :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES hernando@hernando-OCTO: ~$

jbgury commented 3 years ago

Depuis le debut on cherche via Docker mais ici on voit que rien n'est en fonctionnement. Donc soit LibreOsteo ne fonctionne pas avec Docker, soit pour le moment il ne s'execute pas du tout, soit il n'est pas sur votre machine?

Pourriez vous me renseigner?

Vous accedez à LibreOsteo via l'url http://localhost:8085 ou bien une autre url?

Hernando82 commented 3 years ago

J'accède via http://localhost:8000

Lorsque je lance LibreOsteo j'ouvre un terminal afin de pouvoir y accéder voici les information de démarrage :

System check identified no issues (0 silenced). October 01, 2021 - 09:18:58 Django version 2.2.24, using settings 'Libreosteo.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. Use the settings = Libreosteo.settings

jbgury commented 3 years ago

Ok donc vous n'utilisez pas du tout Docker pour l'exécution, mais une installation depuis les sources en mode "développement". Même si ce n'est pas recommandé cela fonctionne très bien. J'imagine que pour démarrer vous faites ./manage.py runserver Dans ce cas, pour corriger votre problème, lorsque vous ouvrez le terminal, au lieu de lancer LibreOsteo, vous tapez les commandes suivantes ./manage.py shell Vous obtenez alors en dernière ligne : >>>

Et à présent copier coller la série suivante :

from libreosteoweb.models import PaimentMean
for pm in [('check', 'Chèque', True), ('cash', 'Espèces', True),
               ('ecard', 'Carte Bancaire', False)]:
        pm_db = PaimentMean(code=pm[0], text=pm[1], enable=pm[2])
        pm_db.save()

Faire entrez pour avoir à nouveau >>>

Taper: exit() ou faire CTRL+D

Vous pouvez à présent utiliser LibreOsteo normalement avec les informations de paiement.

Hernando82 commented 3 years ago

Ca fonctionne merci beaucoup de tout le temps que vous avez passé pour trouver la solution :)