| |
Posté le 28 novembre 2019 - 14:13 |
est ce que c'est possible de connect directement sur la base postgres ? quelle sont les possiblité pour ce connect ? Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 453 messages Popularité : +31 (43 votes) |
|
Posté le 29 novembre 2019 - 08:59 |
Bonjour,
Non la connection en direct sur postgres n'est pas possible il faut se connecter à odoo et ensuite il va falloir passer par des api de communication afin de pouvoir lire et ecrire dans les tables. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 453 messages Popularité : +31 (43 votes) |
|
Posté le 29 novembre 2019 - 09:14 |
Dans le code du projet :
odoo est un CJsonOdoo_v3
Code de connection (mis dans un bouton)
odoo:p_database = "*************" odoo:p_password = "**************" odoo:p_login = "***************" odoo:p_ipserveur = "000.00.00.0000:8004"
SI PAS odoo.connexion() ALORS ToastAffiche("pas de connexion à odoo",toastCourt,cvMilieu,chCentre) SINON ToastAffiche("Coonecté à odoo",toastCourt,cvMilieu,chCentre) FIN
code pour récupérer une valeur (mis dans un bouton)
odoo:var..FormatJSON = "{}" odoo:var.filtre = "('name','=','"+ SansEspace("2006") +"')," monfiltre = Vrai monfiltrevaleur = "('name','=','"+ SansEspace("2005") +"'),"
SI odoo:call("wpa.posteateliers","api_v1_wpa_posteateliers_cadence_get") ALORS ToastAffiche("Cadence poste 2005" + CRLF + "Cadence : " + odoo:res_data[1].cadence + CRLF + "Nb : " + odoo:res_data[1].nb_cadence + CRLF + "Nb défaut : " + odoo:res_data[1].nb_cadence_default,toastCourt,cvMilieu,chCentre)
FIN
exemple de la classe
CJsonOdoo_v3 est une Classe
p_database est une chaîne p_login est une chaîne p_password est une chaîne p_ipserveur est une chaîne p_company_id est un entier p_timeout est un entier demande_request est un JSON res_data est un JSON var est un JSON p_replog est une chaîne p_appli est une chaîne IDFichier est un entier PRIVÉE demande_id est un entier MaRequeteConnexion est un restRequête MaRequeteRequest est un restRequête cReponseRequest est un restRéponse demande_connexion est un JSON result_connexion est un JSON DureeMaFonction est une Durée FIN
Procedure Constructeur()
:demande_id = 1 :demande_connexion.jsonrpc = "2.0" :demande_connexion.method = "call" :p_timeout = 20000 :p_replog = "" :IDFichier = -1
Procedure Destructeur()
Procedure connexion()
MyErreur est un booléen
:MaRequeteConnexion..Entête["Content-type"] = "application/json" :MaRequeteConnexion..URL = "http://"+:p_ipserveur+"/web/session/authenticate" :MaRequeteConnexion..Méthode = httpPost
:demande_connexion.params.db = :p_database :demande_connexion.params.login = :p_login :demande_connexion.params.password = :p_password :demande_connexion.id = :demande_id
:MaRequeteConnexion.Contenu = :demande_connexion..FormatJSON :cReponseRequest = RESTEnvoie(:MaRequeteConnexion)
SI :p_replog <> "" _ET_ :IDFichier=-1 ALORS :log_open() FIN
SI ErreurDétectée ALORS Erreur(ErreurInfo(errComplet)) RENVOYER False SINON SI :cReponseRequest..CodeEtat<>200 ALORS Erreur("Erreur HTTP "+:cReponseRequest.CodeEtat,AnsiVersUnicode(:cReponseRequest..Contenu)) Trace("Envoyé : "+AnsiVersUnicode(:MaRequeteRequest.Contenu)) RENVOYER Faux SINON :result_connexion = :cReponseRequest..Contenu MyErreur = :result_connexion.error..Existe SI MyErreur ALORS RENVOYER False :result_connexion = :result_connexion.result RENVOYER True FIN
FIN
Procedure call(p_model="",p_method="" )
SI :IDFichier<>-1 ALORS ChronoDébut() FIN
:MaRequeteRequest..ContentType = typeMimeJSON
:MaRequeteRequest..Entête["Cookie"] = :cReponseRequest.Entête["Set-Cookie"] :MaRequeteRequest..URL = "http://"+:p_ipserveur+"/web/dataset/call_kw" :MaRequeteRequest..DuréeNonRéponse = :p_timeout :demande_request.jsonrpc = "2.0" :demande_request.method = "call"
SI p_model<>"" ALORS :demande_request.params.model = p_model SI p_model<>"" ALORS :demande_request.params.method = p_method
:demande_request.params.context.lang = :result_connexion.user_context.lang :demande_request.params.context.tz = :result_connexion.user_context.tz :demande_request.params.context.uid = :result_connexion.user_context.uid
:demande_request.params.kwargs.tmp = "" SupprimeTout(:demande_request.params.kwargs..Membre)
:demande_request.params.args[1] = :result_connexion.Company_id :demande_request.params.args[2] = :var
:MaRequeteRequest.Contenu = :demande_request..FormatJSON cMaReponsedata est un restRéponse = RESTEnvoie(:MaRequeteRequest)
SI ErreurDétectée ALORS Erreur(ErreurInfo(errComplet)) SINON
SI cMaReponsedata..CodeEtat<>200 ALORS Erreur("Erreur HTTP "+cMaReponsedata.CodeEtat,AnsiVersUnicode(cMaReponsedata..Contenu)) RENVOYER Faux SINON :res_data = cMaReponsedata..Contenu SI :res_data.RESULT = Faux ALORS RENVOYER False :res_data = :res_data.RESULT SI :IDFichier<>-1 ALORS DureeMaFonction = ChronoFin() :log_write(DuréeVersChaîne(DureeMaFonction,"HH-MM-SS-LLL")+";"+p_model+";"+NetAdresseIP+";"+p_method) FIN RENVOYER Vrai FIN FIN
Procedure tesmethode()
:demande_request.params.model = "res.partner" :demande_request.params.method = "api_v1_get_partner_full"
RENVOYER :call(:demande_request.params.model,:demande_request.params.method)
Procedure call_send_tracking()
:demande_request.params.model = "fpv.tracking" :demande_request.params.method = "api_v1_send_tracking"
RENVOYER :call(:demande_request.params.model,:demande_request.params.method)
Procedure init()
:p_timeout = 20000 :var = Null Message modifié, 29 novembre 2019 - 09:29 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 453 messages Popularité : +31 (43 votes) |
|
Posté le 29 novembre 2019 - 09:22 |
DANS ODOO *************************************************************************************************************************** API a écrire dans odoo ceci est un exemple donc la maitrise de python est obligatoire : # -*- coding: utf-8 -*-
import odoo from odoo import tools, models, fields, api, _ from datetime import date, time, datetime import base64 import json import encodings
class wpa_posteateliers(models.Model): _name = 'wpa.posteateliers' _inherit = 'wpa.posteateliers' _model = 'wpa.posteateliers' _description = 'Package header'
#API qui permet de renvoyer juste les informations de cadence en fonction d'un poste envoyer en valeur de filtre en amont @api.model def api_v1_wpa_posteateliers_cadence_get(self, company_id, var): data = [] filter = []
filter = [('company_id', '=', company_id)] if var != None: if 'filtre' in var: filter += eval(var['filtre']) posteateliers = self.env['wpa.posteateliers'].search(filter) for element in posteateliers: dict = {} dict['cadence'] = element.cadence dict['nb_cadence'] = element.nb_cadence dict['nb_cadence_default'] = element.nb_cadence_default
data.append(dict)
if data: return json.dumps(data)
return False
**************************************************************************************************************************** |
| |
| |
| | | |
|
| | |
| |
Posté le 02 décembre 2019 - 09:30 |
Et pour l'authentification vous avez un exemple SVP |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 453 messages Popularité : +31 (43 votes) |
|
Posté le 02 décembre 2019 - 09:52 |
vous avez tout dans ce que j'ai posté : connection et interrogation, il manque juste un exemple d'écriture
Prenez le temps de décortiquer ce que je vous ai envoyé... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 13 messages |
|
Posté le 02 décembre 2019 - 13:58 |
re bonjour comment tester si l’utilisateur et son mot de passe sont enregistre dans ma base ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 453 messages Popularité : +31 (43 votes) |
|
Posté le 02 décembre 2019 - 16:51 |
dans la table res_user mais par contre vous pourrez tester que le login, le password lui n'est pas visible RGPD oblige
Il vous faudra certainement ecrire une api qui se connecte a la table res_user afin d'interroger la base si le login existe |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 13 messages |
|
Posté le 03 décembre 2019 - 13:53 |
est ce qu'il ya une variable de session dans Windev mobile ?Message modifié, 03 décembre 2019 - 13:53 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 453 messages Popularité : +31 (43 votes) |
|
Posté le 03 décembre 2019 - 15:09 |
Qu'entendez vous par variable de session ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 13 messages |
|
Posté le 03 décembre 2019 - 15:55 |
j'ai ressui de connecter sur mon base système authentification mais quand je peux accéder a une autre webservice il a dit session expiré je pense qu'il a besoin de session active |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 453 messages Popularité : +31 (43 votes) |
|
Posté le 04 décembre 2019 - 08:38 |
Désolé je ne passe pas par les webservices mais je préfère écrire des API car cela me permet de faire et d'exploiter ce que je veux donc je ne peu pas vous renseigner sur les webservices d 'odoo |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 13 messages |
|
Posté le 05 décembre 2019 - 10:09 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 453 messages Popularité : +31 (43 votes) |
|
Posté le 05 décembre 2019 - 11:59 |
avez vous créer un super user dans odoo ? (genre compte d'un admin) et utiliser ce compte avec login et mot de passe comme dans le code de connexion que je vous ai fourni plus haut.
De mon coté c'est comme cela que je me connecte à odoo et je n'ai pas de souci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 13 messages |
|
Posté le 05 décembre 2019 - 12:09 |
voici mon code python pour gener mon webservice class myclass(http.Controller): @http.route("/api/employee", type="json", auth="user") def get_employee(self, employee_id): res=request.env['hr.employee'].get_employee(employee_id)
est ce que auth="user" block l'access ? |
| |
| |
| | | |
|
| | |