|
GRUPOS DE DISCUSSÃO PROFISSIONAL WINDEV, WEBDEV e WINDEV Mobile |
| | | | | |
Connect Directement (erp odoo) (Postgressql) avec windev mobile 24 |
Iniciado por User_07, nov., 28 2019 2:13 PM - 14 respostas |
| |
| | | |
|
| |
Publicado em novembro, 28 2019 - 2:13 PM |
est ce que c'est possible de connect directement sur la base postgres ? quelle sont les possiblité pour ce connect ? Merci |
| |
| |
| | | |
|
| | |
| |
Membro registado 450 mensagems Popularité : +31 (43 votes) |
|
Publicado em novembro, 29 2019 - 8:59 AM |
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. |
| |
| |
| | | |
|
| | |
| |
Membro registado 450 mensagems Popularité : +31 (43 votes) |
|
Publicado em novembro, 29 2019 - 9:14 AM |
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 Mensagem modificada, novembro, 29 2019 - 9:29 AM |
| |
| |
| | | |
|
| | |
| |
Membro registado 450 mensagems Popularité : +31 (43 votes) |
|
Publicado em novembro, 29 2019 - 9:22 AM |
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
**************************************************************************************************************************** |
| |
| |
| | | |
|
| | |
| |
Publicado em dezembro, 02 2019 - 9:30 AM |
Et pour l'authentification vous avez un exemple SVP |
| |
| |
| | | |
|
| | |
| |
Membro registado 450 mensagems Popularité : +31 (43 votes) |
|
Publicado em dezembro, 02 2019 - 9:52 AM |
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é... |
| |
| |
| | | |
|
| | |
| |
Membro registado 13 mensagems |
|
Publicado em dezembro, 02 2019 - 1:58 PM |
re bonjour comment tester si l’utilisateur et son mot de passe sont enregistre dans ma base ? |
| |
| |
| | | |
|
| | |
| |
Membro registado 450 mensagems Popularité : +31 (43 votes) |
|
Publicado em dezembro, 02 2019 - 4:51 PM |
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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 13 mensagems |
|
Publicado em dezembro, 03 2019 - 1:53 PM |
est ce qu'il ya une variable de session dans Windev mobile ?Mensagem modificada, dezembro, 03 2019 - 1:53 PM |
| |
| |
| | | |
|
| | |
| |
Membro registado 450 mensagems Popularité : +31 (43 votes) |
|
Publicado em dezembro, 03 2019 - 3:09 PM |
Qu'entendez vous par variable de session ? |
| |
| |
| | | |
|
| | |
| |
Membro registado 13 mensagems |
|
Publicado em dezembro, 03 2019 - 3:55 PM |
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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 450 mensagems Popularité : +31 (43 votes) |
|
Publicado em dezembro, 04 2019 - 8:38 AM |
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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 13 mensagems |
|
Publicado em dezembro, 05 2019 - 10:09 AM |
| |
| |
| | | |
|
| | |
| |
Membro registado 450 mensagems Popularité : +31 (43 votes) |
|
Publicado em dezembro, 05 2019 - 11:59 AM |
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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 13 mensagems |
|
Publicado em dezembro, 05 2019 - 12:09 PM |
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 ? |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|