33< head >
44< meta http-equiv ="Content-Type " content ="text/html; charset=utf-8 " />
55< meta name ="generator " content ="Docutils: https://docutils.sourceforge.io/ " />
6- < title > README.rst </ title >
6+ < title > Pydantic </ title >
77< style type ="text/css ">
88
99/*
360360</ style >
361361</ head >
362362< body >
363- < div class ="document ">
363+ < div class ="document " id ="pydantic ">
364+ < h1 class ="title "> Pydantic</ h1 >
364365
365-
366- < a class ="reference external image-reference " href ="https://odoo-community.org/get-involved?utm_source=readme ">
367- < img alt ="Odoo Community Association " src ="https://odoo-community.org/readme-banner-image " />
368- </ a >
369- < div class ="section " id ="pydantic ">
370- < h1 > Pydantic</ h1 >
371366<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
372367!! This file is generated by oca-gen-addon-readme !!
373368!! changes will be overwritten. !!
374369!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375370!! source digest: sha256:bf754ec770116cffb9eee07a08eb62409c1868dfd0f765c017156da1d8242df5
376371!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377- < p > < a class ="reference external image-reference " href ="https://odoo-community.org/page/development-status "> < img alt ="Beta " src ="https://img.shields.io/badge/maturity-Beta-yellow.png " /> </ a > < a class ="reference external image-reference " href ="http://www.gnu.org/licenses/lgpl-3.0-standalone.html "> < img alt ="License: LGPL-3 " src ="https://img.shields.io/badge/license-LGPL--3-blue.png " /> </ a > < a class ="reference external image-reference " href ="https://github.com/OCA/rest-framework/tree/18.0/pydantic "> < img alt ="OCA/rest-framework " src ="https://img.shields.io/badge/github-OCA%2Frest--framework-lightgray.png?logo=github " /> </ a > < a class ="reference external image-reference " href ="https://translation.odoo-community.org/projects/rest-framework-18-0/rest-framework-18-0-pydantic "> < img alt ="Translate me on Weblate " src ="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png " /> </ a > < a class ="reference external image-reference " href ="https://runboat.odoo-community.org/builds?repo=OCA/rest-framework&target_branch=18.0 "> < img alt ="Try me on Runboat " src ="https://img.shields.io/badge/runboat-Try%20me-875A7B.png " /> </ a > </ p >
372+ < p > < a class ="reference external image-reference " href ="https://odoo-community.org/page/development-status "> < img alt ="Beta " src ="https://img.shields.io/badge/maturity-Beta-yellow.png " /> </ a > < a class ="reference external image-reference " href ="http://www.gnu.org/licenses/lgpl-3.0-standalone.html "> < img alt ="License: LGPL-3 " src ="https://img.shields.io/badge/licence-LGPL--3-blue.png " /> </ a > < a class ="reference external image-reference " href ="https://github.com/OCA/rest-framework/tree/18.0/pydantic "> < img alt ="OCA/rest-framework " src ="https://img.shields.io/badge/github-OCA%2Frest--framework-lightgray.png?logo=github " /> </ a > < a class ="reference external image-reference " href ="https://translation.odoo-community.org/projects/rest-framework-18-0/rest-framework-18-0-pydantic "> < img alt ="Translate me on Weblate " src ="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png " /> </ a > < a class ="reference external image-reference " href ="https://runboat.odoo-community.org/builds?repo=OCA/rest-framework&target_branch=18.0 "> < img alt ="Try me on Runboat " src ="https://img.shields.io/badge/runboat-Try%20me-875A7B.png " /> </ a > </ p >
378373< p > This addon provides a utility method that can be used to map odoo record
379- to a < a class ="reference external " href ="https://pydantic- docs.helpmanual.io / "> Pydantic model</ a > .</ p >
374+ to a < a class ="reference external " href ="https://docs.pydantic.dev / "> Pydantic model (>= v2) </ a > .</ p >
380375< p > If you need to make your Pydantic models extendable at runtime, takes a
381376look at the python package
382377< a class ="reference external " href ="https://pypi.org/project/extendable_pydantic/ "> extendable-pydantic</ a >
383- and the odoo addon
384- < a class =" reference external " href =" https://github.com/acsone/odoo-addon-extendable " > extendable</ a > </ p >
378+ and the < a class =" reference external " href =" https://pypi.org/project/odoo-addon-extendable " > odoo addon
379+ extendable</ a > </ p >
385380< p > < strong > Table of contents</ strong > </ p >
386381< div class ="contents local topic " id ="contents ">
387382< ul class ="simple ">
@@ -397,71 +392,63 @@ <h1>Pydantic</h1>
397392</ ul >
398393</ div >
399394< div class ="section " id ="usage ">
400- < h2 > < a class ="toc-backref " href ="#toc-entry-1 "> Usage</ a > </ h2 >
395+ < h1 > < a class ="toc-backref " href ="#toc-entry-1 "> Usage</ a > </ h1 >
401396< p > To support pydantic models that map to Odoo models, Pydantic model
402397instances can be created from arbitrary odoo model instances by mapping
403- fields from odoo models to fields defined by the pydantic model. To ease
404- the mapping, the addon provide a utility class
405- odoo.addons.pydantic.utils.GenericOdooGetter. </ p >
398+ fields from odoo models to fields defined by the pydantic model.</ p >
399+ < p > To ease the mapping, the addon provide an utility class (using
400+ < tt class =" docutils literal " > pydantic>2.0 </ tt > ) < tt class =" docutils literal " > odoo.addons.pydantic.utils.PydanticOdooBaseModel </ tt > : </ p >
406401< pre class ="code python literal-block ">
407- < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> pydantic</ span > < span class ="w ">
408- </ span > < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> odoo.addons.pydantic</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> utils</ span > < span class ="w ">
402+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> odoo.addons.pydantic.utils</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> PydanticOdooBaseModel</ span > < span class ="w ">
409403
410- </ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> Group</ span > < span class ="p "> (</ span > < span class ="n "> pydantic</ span > < span class ="o "> .</ span > < span class ="n "> BaseModel</ span > < span class ="p "> ):</ span > < span class ="w ">
411- </ span > < span class ="n "> name</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="w ">
412404
413- </ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> Config</ span > < span class ="p "> :</ span > < span class ="w ">
414- </ span > < span class ="n "> orm_mode</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="w ">
415- </ span > < span class ="n "> getter_dict</ span > < span class ="o "> =</ span > < span class ="n "> utils</ span > < span class ="o "> .</ span > < span class ="n "> GenericOdooGetter</ span > < span class ="w ">
405+ </ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> Group</ span > < span class ="p "> (</ span > < span class ="n "> PydanticOdooBaseModel</ span > < span class ="p "> ):</ span > < span class ="w ">
406+ </ span > < span class ="n "> name</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="w ">
416407
417- </ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> UserInfo</ span > < span class ="p "> (</ span > < span class ="n "> pydantic </ span > < span class =" o " > . </ span > < span class =" n " > BaseModel </ span > < span class ="p "> ):</ span > < span class ="w ">
408+ </ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> UserInfo</ span > < span class ="p "> (</ span > < span class ="n "> PydanticOdooBaseModel </ span > < span class ="p "> ):</ span > < span class ="w ">
418409</ span > < span class ="n "> name</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="w ">
419410</ span > < span class ="n "> groups</ span > < span class ="p "> :</ span > < span class ="n "> List</ span > < span class ="p "> [</ span > < span class ="n "> Group</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> pydantic</ span > < span class ="o "> .</ span > < span class ="n "> Field</ span > < span class ="p "> (</ span > < span class ="n "> alias</ span > < span class ="o "> =</ span > < span class ="s2 "> "groups_id"</ span > < span class ="p "> )</ span > < span class ="w ">
420411
421- </ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> Config</ span > < span class ="p "> :</ span > < span class ="w ">
422- </ span > < span class ="n "> orm_mode</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="w ">
423- </ span > < span class ="n "> getter_dict</ span > < span class ="o "> =</ span > < span class ="n "> utils</ span > < span class ="o "> .</ span > < span class ="n "> GenericOdooGetter</ span > < span class ="w ">
424-
425412</ span > < span class ="n "> user</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> env</ span > < span class ="o "> .</ span > < span class ="n "> user</ span > < span class ="w ">
426413</ span > < span class ="n "> user_info</ span > < span class ="o "> =</ span > < span class ="n "> UserInfo</ span > < span class ="o "> .</ span > < span class ="n "> from_orm</ span > < span class ="p "> (</ span > < span class ="n "> user</ span > < span class ="p "> )</ span >
427414</ pre >
428- < p > See the official < a class ="reference external " href ="https://pydantic-docs.helpmanual.io/ "> Pydantic
429- documentation</ a > to discover all
430- the available functionalities.</ p >
415+ < p > See the official < a class ="reference external " href ="https://docs.pydantic.dev/ "> Pydantic documentation</ a >
416+ to discover all the available functionalities.</ p >
431417</ div >
432418< div class ="section " id ="known-issues-roadmap ">
433- < h2 > < a class ="toc-backref " href ="#toc-entry-2 "> Known issues / Roadmap</ a > </ h2 >
419+ < h1 > < a class ="toc-backref " href ="#toc-entry-2 "> Known issues / Roadmap</ a > </ h1 >
434420< p > The
435421< a class ="reference external " href ="https://github.com/OCA/rest-framework/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement+label%3Apydantic "> roadmap</ a >
436422and < a class ="reference external " href ="https://github.com/OCA/rest-framework/issues?q=is%3Aopen+is%3Aissue+label%3Abug+label%3Apydantic "> known
437423issues</ a >
438424can be found on GitHub.</ p >
439425</ div >
440426< div class ="section " id ="bug-tracker ">
441- < h2 > < a class ="toc-backref " href ="#toc-entry-3 "> Bug Tracker</ a > </ h2 >
427+ < h1 > < a class ="toc-backref " href ="#toc-entry-3 "> Bug Tracker</ a > </ h1 >
442428< p > Bugs are tracked on < a class ="reference external " href ="https://github.com/OCA/rest-framework/issues "> GitHub Issues</ a > .
443429In case of trouble, please check there if your issue has already been reported.
444430If you spotted it first, help us to smash it by providing a detailed and welcomed
445431< a class ="reference external " href ="https://github.com/OCA/rest-framework/issues/new?body=module:%20pydantic%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior** "> feedback</ a > .</ p >
446432< p > Do not contact contributors directly about support or help with technical issues.</ p >
447433</ div >
448434< div class ="section " id ="credits ">
449- < h2 > < a class ="toc-backref " href ="#toc-entry-4 "> Credits</ a > </ h2 >
435+ < h1 > < a class ="toc-backref " href ="#toc-entry-4 "> Credits</ a > </ h1 >
450436< div class ="section " id ="authors ">
451- < h3 > < a class ="toc-backref " href ="#toc-entry-5 "> Authors</ a > </ h3 >
437+ < h2 > < a class ="toc-backref " href ="#toc-entry-5 "> Authors</ a > </ h2 >
452438< ul class ="simple ">
453439< li > ACSONE SA/NV</ li >
454440</ ul >
455441</ div >
456442< div class ="section " id ="contributors ">
457- < h3 > < a class ="toc-backref " href ="#toc-entry-6 "> Contributors</ a > </ h3 >
443+ < h2 > < a class ="toc-backref " href ="#toc-entry-6 "> Contributors</ a > </ h2 >
458444< ul class ="simple ">
459445< li > Laurent Mignon << a class ="reference external " href ="mailto:laurent.mignon@acsone.eu "> laurent.mignon@acsone.eu</ a > ></ li >
460446< li > Tris Doan << a class ="reference external " href ="mailto:tridm@trobz.com "> tridm@trobz.com</ a > ></ li >
447+ < li > Pierre Verkest << a class ="reference external " href ="mailto:pierre@verkest.fr "> pierre@verkest.fr</ a > ></ li >
461448</ ul >
462449</ div >
463450< div class ="section " id ="maintainers ">
464- < h3 > < a class ="toc-backref " href ="#toc-entry-7 "> Maintainers</ a > </ h3 >
451+ < h2 > < a class ="toc-backref " href ="#toc-entry-7 "> Maintainers</ a > </ h2 >
465452< p > This module is maintained by the OCA.</ p >
466453< a class ="reference external image-reference " href ="https://odoo-community.org ">
467454< img alt ="Odoo Community Association " src ="https://odoo-community.org/logo.png " />
@@ -476,6 +463,5 @@ <h3><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h3>
476463</ div >
477464</ div >
478465</ div >
479- </ div >
480466</ body >
481- </ html >
467+ </ html >
0 commit comments