From ac772f8fe81c9c58f74271b1b61d02937ab12667 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Wed, 21 Jan 2026 09:37:51 +0700 Subject: [PATCH] refactor: Update sign document route type from json to jsonrpc. --- .gitignore | 22 ++++++++++++++++++ __pycache__/__init__.cpython-312.pyc | Bin 242 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 217 -> 0 bytes controllers/__pycache__/main.cpython-312.pyc | Bin 4921 -> 0 bytes controllers/main.py | 2 +- models/__pycache__/__init__.cpython-312.pyc | Bin 291 -> 0 bytes models/__pycache__/sign_item.cpython-312.pyc | Bin 2189 -> 0 bytes .../sign_item_type.cpython-312.pyc | Bin 654 -> 0 bytes .../__pycache__/sign_request.cpython-312.pyc | Bin 17274 -> 0 bytes 9 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 100644 __pycache__/__init__.cpython-312.pyc delete mode 100644 controllers/__pycache__/__init__.cpython-312.pyc delete mode 100644 controllers/__pycache__/main.cpython-312.pyc delete mode 100644 models/__pycache__/__init__.cpython-312.pyc delete mode 100644 models/__pycache__/sign_item.cpython-312.pyc delete mode 100644 models/__pycache__/sign_item_type.cpython-312.pyc delete mode 100644 models/__pycache__/sign_request.cpython-312.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..80f29ca --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class + +# Odoo +*.log +.env +.venv/ +venv/ +*.pot +*.po~ + +# VSCode +.vscode/ + +# PyCharm +.idea/ + +# OS +.DS_Store +Thumbs.db diff --git a/__pycache__/__init__.cpython-312.pyc b/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 46fcb75df6f3d5dd95f555e7ab2042b653916525..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmXwzJ#NB45QS%K#INYm1aSd3tmr5ZElq?{q@u_w@(y^V^$zUXg-?<*a29SrL4#7H zi$q72v6M{l=6ll9n>mliLy&o!yxX4Xq2`sLZr6@hVIbx0KXD}TlOp05JYC^A H^u+%HFR(tZ diff --git a/controllers/__pycache__/__init__.cpython-312.pyc b/controllers/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index d97b371bbcf6dcd9d6973c0503affaf3b3a43428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmXwzF$w}P5JfY)A|eQ4=?xaaU}v#-1hEtggY1lMAjxR5TkJ_ZgJ?+U3 lkPlKR?R2Ho^w@lQxn-;kEqpHywO@o5UMT=P#K?D}`2u^NIYIyc diff --git a/controllers/__pycache__/main.cpython-312.pyc b/controllers/__pycache__/main.cpython-312.pyc deleted file mode 100644 index 95105bc40133e6cf13d50d343060690e4694392c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4921 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 diff --git a/controllers/main.py b/controllers/main.py index fb791cc..783c18b 100644 --- a/controllers/main.py +++ b/controllers/main.py @@ -93,7 +93,7 @@ class SignController(Sign): except Exception: return request.not_found() - @http.route(['/sign/sign//'], type='json', auth='public') + @http.route(['/sign/sign//'], type='jsonrpc', auth='public') def sign_document(self, request_id, token, signature=None, items=None, **kwargs): # Intercept items to prevent saving the URL as value if items: diff --git a/models/__pycache__/__init__.cpython-312.pyc b/models/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index df411901de1c198a165be0fcf256ef21165f7928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmX|+u}TCn5Qb+qdvGV-wSxEnZgauTLM(g$5$v`JvKigLCOMOAktgvPd=}r}KpU~J z6RtZDoGj`T|9t2=F z$aOROL>_N&yNc$)DU-;mlsCl5;y+e(K z#a4<^DN^B-r!3%>{dZ?R*NKRfG{1@~9w~LP0def@Des*^~t?7xSTlVk!a> z(MJeNiwMg^n%&dzZ~LrE!Nyc8Awzk}H-^llOwnda&L(;6F{R*QlJ}Tk83K!Z<`H^< zQkQ1iPC+eX34tRc$P_R#MJ$+-h=@Gv$JFkC03(*}%j;qwH5K1(7lb&3mHXkAo%%{U zwZksr+wJYVlkae(!!GtpyC_z0?0&qJp*UD}%?|8xV%IuE%@^LYh}HuZnHts>k(sC@ zjBch*+0)KMi4>|454e;K?DLpSQy!Ts6DLc+qQOCu6|Y2XXS$kfYAqY5ij?H+TOS%C z3saKMln7=jB^m5G`AVmySI&WDwWq^7gE2p{uU+Vr3ttjyIpkKU8k+>FPx=x=qFoRL z<<+2ZAS_&}6bYcnHUjly?pB~V&Id%%TB#JS0o02PbD?L|J3&=Itst3~KYk@ClfNr2YlCD3)c zj|+M;*^=!#R^a@igATPiXm^7?aP|s7pnKH#l6F_yR1eg(o-OUrBkfQ<*}Hmd<=DM< zH<~({9bMU`}O|AYgc}``t#MbiQ4{Dy?kJ;N4>338zG+31x{Fra>v#-j<~8 z>7slbnA)68+6!BH7|3tPNAIVdM!1v{{#WHK0a-+Kt$$(sNpf)c&DHcudhPgw=w@qM;_(V%0id;pL7uANp8#Q=12ZqJr|T~l)eoz nK4sqPK(-}85dKC-AETpxq9gyv1H#aqn@jU|=l?~(`u_g`t_30O diff --git a/models/__pycache__/sign_item_type.cpython-312.pyc b/models/__pycache__/sign_item_type.cpython-312.pyc deleted file mode 100644 index 200604d04f3477dd2c37fdb398dd9d62e052e097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmZ8eJ#W-N5S?9roD=2X1V~6UxeDo;Gc<_el!As_L4>xM;4xD5lNkk-#C;vq*ss9cD3OFF#;ciOadFQmNMSks124-uK9^~^<$o=|I9ADFz zO;b##CFZCk(Bh~Pc_K`(SfgTq3}%qTI*GaM8ETPCA?e!mO0HaA9>{J`a~licnWL!0Yg7 zT`pCgpi80RO5J}LCY3IgL>(&EpLcYQFPuC%moIW_4y_x+2i`&^hp{lGV diff --git a/models/__pycache__/sign_request.cpython-312.pyc b/models/__pycache__/sign_request.cpython-312.pyc deleted file mode 100644 index e2aff84c8aec7e1923b774333b3e3243a72cd51f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17274 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