Cara Menghilangkan Params default pada API (data JSON) di ODOO 14

Segala puji milik Allah. Yang mana sebelumnya kita patut memuji-Nya, patut meminta pertolongan-Nya dan memohon ampun kepada-Nya. Serta kita berlindung diri kepada-Nya dari keburukan diri kita dan kejelekan perbuatan yang ada pada diri kita. Siapa yang diberi hidayah oleh Allah maka tidak ada yang mampu menyesatkannya dan sebaliknya bagi siapa yang disesatkan oleh Allah maka tidak akan ada yang dapat memberinya hidayah. Saya juga bersaksi bahwa tidak ada tuhan (yang berhak disembah) selain Allah semata yang tidak ada sekutu bagi-Nya dan saya bersaksi bahwa Nabi Muhammad Shalallahu'alaihi wa sallam adalah hamba dan utusan-Nya.

Bismillah.., Ahsanallahu ilaikum, pada kali ini masih melanjutkan dari pembahasan saya sebelumnya mengenai RESTful API. Tahukah anda bahwa ODOO mempunyai default params untuk result dari data JSON yang dikirim atau kebentuk dari ODOO???
Tahukah anda ODOO mempunyai default result API seperti dibawah ini:

{
"jsonrpc""2.0",
"id"null,
"result": {
            // isi data,
                 }
}

Tehukah anda dalam beberapa project, terutama project yang berhubungan dengan payment gateway, terkadang ada beberapa dari pihak penyedia jasa payment gateway yang mempunyai default parameter (params) yang mana kita harus menyesuaikan dari dokumentasi menyedia jasa payment gateway agar system ODOO dapat mengambil data dari penyedia layanan payment gateway atau dengan kebutuhan system ODOO mengirimkan data ke pihak layanan dari payment gateway. Tentu dalam hal ini kita harus merubah default hasil result API dari ODOO dan menyesuaikannya. Kemudian, Bagaimana caranya???. Untuk merubah default anda bisa mengikuti langkah-langkah berikut ini.

1. Buatlah modul baru dan file python (.py) dengan nama 'http.py'

2. Kemudian pada file 'http.py' yang telah buat, tuliskan source code dibawah ini

from odoo import http
from odoo.http import request, Response, JsonRequest, HttpRequest
from odoo.tools import date_utils
import json

class JsonRequestNew(JsonRequest):

def _json_response(self, result=None, error=None):

response = {
'jsonrpc': '2.0',
'id': self.jsonrequest.get('id')
}
responseData = super(JsonRequestNew, self)._json_response(result=result,
error=error)
if error is not None:
response['error'] = error
if result is not None:
response['result'] = result
  response = {}
  response = result

if self.jsonp:
response['session_id'] = self.session.sid
mime = 'application/javascript'
body = "%s(%s);" % (self.jsonp, json.dumps(response,
default=date_utils.json_default))
else:
mime = 'application/json'
body = json.dumps(response, default=date_utils.json_default)

return Response(
body, status=error and error.pop('http_status', 200) or 200,
headers=[('Content-Type', mime), ('Content-Length', len(body))]
), responseData

class RootNew(http.Root):

def get_request(self, httprequest):
HttpRequestCustom = super(RootNew, self).get_request(httprequest=httprequest)

if httprequest.args.get('jsonp'):
return JsonRequestNew(httprequest)
if httprequest.mimetype in ("application/json", "application/json-rpc"):
return JsonRequestNew(httprequest)
else:
return HttpRequestCustom


http.root = RootNew()


Penjelasan:

Source code ini menginherit dan meninpa/merubah method _json_response yang ada di Class JsonRequest dan menimpa/merubah method get_request di Class Root pada file 'http.py' yang ada di file main (utama) ODOO.

Maka hasilnya adalah kita telah menghilangkan result params dari default ODOO dan langsung menampilkan result params yang telah kita.


Mungkin cukup sekian dulu untuk sharing dari saya kali ini, dan tunggu konten-konten tulisan blog disini dari saya maupun teman-teman saya yang lain, semoga bermanfaat dan jika ada kendala/pertnyaan dalam langkah-langkah yang saya tulis, anda bisa balas comment di blog ini, Terima kasih.

Jazakakumullahu khoiron katsiron.. 




Membuat Halaman Manage Database Agar Tidak Bisa Dibuka Dengan Redirect 404 di NGINX