์๋ ํ์ธ์,
๋๋ ์๋ก์ด ๋ฐ์ฝ๋ ์ดํฐ์ ๋ํด ์๊ฐํ๋ค.
@api.groups('group_1', 'group_2', '...')
def function_name(self, args):
...
<button name='function_name' />
์ ๊ฐ์ xml ํ์ผ์์ ํจ์๋ก ํธ์ถ๋๋ ํจ์๋ฅผ ์ฅ์ํฉ๋๋ค.
๋ฐ์ฝ๋ ์ดํฐ๋ ์ก์ธ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉด ํ์ฌ ์ฌ์ฉ์๊ฐ ์ ์ ๋ ๊ทธ๋ฃน ์ค ํ๋์ ๊ตฌ์ฑ์์ธ์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ ๋๋ง ๋ทฐ์์ ์ฌ์ฉ์๊ฐ ์ ์ ๋ ๊ทธ๋ฃน์ ๊ตฌ์ฑ์์ด ์๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ๋ฒํผ์ด ์จ๊ฒจ์ง๋๋ค.
์ด ์๋ก์ด ๋ฐ์ฝ๋ ์ดํฐ๋ ์ฌ์ฉ์๊ฐ xml RPC์ ์ํด ์จ๊ฒจ์ง ๋ฒํผ์ ๊ธฐ๋ฅ์ ํธ์ถ ํ ์์๋ ๋ณด์ ์๋ฐ์ ์์ ํ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ๋ก ๋ค๋ฅธ ๋ฐ์ฝ๋ ์ดํฐ @ api.add_groups ๋๋ @ api.remove_groups๊ฐ ๋ชจ๋ธ์ ์์ํ๋ ์ฌ์ฉ์ ์ ์ ๋ชจ๋์์ ํจ์์ ๋ํ ์ก์ธ์ค๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ๊ฒ์ ์์ํ ์ ์์ต๋๋ค.
๊ทํ์ ์๊ฒฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋๋ ์ด๊ฒ์ด ์ข์ ์๊ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.-๋ชจํธํ ๋ณด์ (๋ฒํผ ์จ๊ธฐ๊ธฐ)์ด ์๋ํ์ง ์์ต๋๋ค.
์ง๋ฌธ์ ์ด๊ฒ์ ์ด๋์ ๋ ๊ฒ์ธ๊ฐ์
๋๋ค. api.foreach
๊ตฌํ์ด ํฌํจ ๋ OCA Python ๋ชจ๋ ์ ๋ง๋ค์์ง ๋ง OCA ์ ๋ฉด์ผ๋ก ๊ฐ์ ธ ์ค๋ ๋ฐ๋ ๋ณ๋ค๋ฅธ ์์ง์์ด ์์์ต๋๋ค.
๋๋ ์ฌ์ ํ OCA API ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ ๊ฒ์ด ์ข์ ์๊ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. @lasley OCA ์ธ์คํด์ค ์์ ( "ํ๋ก์ ํธ ๋ง๋ค๊ธฐ")์ ๋ฃ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ ๋งํ๋ฉด ๋ฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ ๋ํด : +1 : ์ถ๊ฐ ์ฉ์ด์ง๋ง ๋ฐ์ฝ๋ ์ดํฐ add_groups
๋ฑ์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ์์์ผ๋ก ์ฒ๋ฆฌ๋์ด์ผํฉ๋๋ค : ๋ฎ์ด ์ด ๋ฉ์๋์ ๋ฐ์ฝ๋ ์ดํฐ์ ์ ๊ทธ๋ฃน์ ์ถ๊ฐํ๋ฉด ํด๋น ๊ทธ๋ฃน์ด ๋ชฉ๋ก์ ์ถ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ฃน ์ ๊ฑฐ์ ๋ํด์๋ ์ฝ์ด์์์ ๊ฐ์ ๋ค๋ฅธ ๊ธฐ์ ์ ์ฌ์ฉํด์ผํฉ๋๋ค (์ : ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ทธ๋ฃน์ด ๋ ์ ์ ๋ค๋ฅธ ๋ฉ์๋).
์๋ ํ์ธ์ ! ๋ต๋ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. OCA API ๋ผ์ด๋ธ๋ฌ๋ฆฌ LGTM. ์ข์ ์๊ฐ!
๊ทธ๋ฌ๋ ๋ฐ์ฝ๋ ์ดํฐ add_groups ๋ฑ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋น์ ๋ง์ด ๋ง์์. ์ ๋ง ๋จ์ํ ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฃน ์ ๊ฑฐ์ ๋ํด์๋ ์ฝ์ด์์์ ๊ฐ์ ๋ค๋ฅธ ๊ธฐ์ ์ ์ฌ์ฉํด์ผํฉ๋๋ค (์ : ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ทธ๋ฃน์ด ๋ ์ ์ ๋ค๋ฅธ ๋ฉ์๋).
๋ชจ๋ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑ ํ ์ ์์์ง ํ์ ํ ์ ์์ง๋ง ์ ์ ์ฅ์์ ๋ํ ํน์ PR์์ ์ด์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
@lasley OCA ์ธ์คํด์ค ์์ ( "ํ๋ก์ ํธ ๋ง๋ค๊ธฐ")์ ๋ฃ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ ๋งํ๋ฉด ๋ฉ๋๋ค.
@lasley , ๋ณด๋ด ์ฃผ์ธ์. POC๋ฅผ ์์ํ ๋ค์ ๋ค์ Open (/ Closed) Days์ ์์ ์ ์๋ฃํ๋ ค๊ณ ํฉ๋๋ค.
๋๋ ์ฌ์ ํ OCA API ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ ๊ฒ์ด ์ข์ ์๊ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. @lasley OCA ์ธ์คํด์ค ์์ ( "ํ๋ก์ ํธ ๋ง๋ค๊ธฐ")์ ๋ฃ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ ๋งํ๋ฉด ๋ฉ๋๋ค.
์ข์ ์ -๋น์์๋์ด ์์ ์ ์ํ ํ ๊ถํ์ด ์์์ต๋๋ค. ๊ทธ๋๋ OCA ์ธ์คํด์ค์์์ด ํ๋ก์ธ์ค๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์กฐ๊ธ ๋ ํ๊ณ ์ ์ ์ฅ์๋ก ๋ค์๋ณด๊ณ ํ๊ฒ ์ต๋๋ค.
ํ ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ ์์ฑ ํ๋ก์ธ์ค๋ฅผ ์ฐพ์ ์ ์์ผ๋ฏ๋ก ๊ณ์ํด์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํ๋ ค๊ณ ํ์ง๋ง ๊ถํ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค. @pedrobaeza PR์ ์ ์ถํ ์ ์๋๋ก ๋น OCA / python-oca ์ ์ฅ์๋ฅผ ๋ง๋์๊ฒ ์ต๋๊น?
๐์ด ์์
์ ์ํํ๋ ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ์์ต๋๋ค. ๋์ผํ ์์
์ ์ํํ๊ณ ์๋ฒ ๋๊ตฌ์ ์ ๋๊ตฌ ๋ชจ๋์์ ๊ฐ์ ธ์ฌ ์์๋ @privileged
๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ๋ง๋๋ ์์ด๋์ด๊ฐ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ pip ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ผ๋ถ๋ก ์ฌ์ฉํ๋ ๊ฒ๋ ์ข์ต๋๋ค. @ api.groups๋ผ๋ ์ด๋ฆ ๋ง ๊ถ๊ธํฉ๋๋ค. ์ด๊ฒ์ด odoo api python ๋ชจ๋์์ ์ค์ง ์๊ธฐ ๋๋ฌธ์ ํผ๋์ค๋ฝ์ง ์์ต๋๊น?
์๋ ํ์ธ์ @ NL66278 ,
์, ์ด๋ฆ ๊ณต๊ฐ์ ๊ดํด์๋ ์ด๋ฆ์ด @ api.groups๊ฐ ์๋ @ oca.groups์ด๊ธฐ ๋๋ฌธ์ ์ถฉ๋์ด ๋ถ๊ฐ๋ฅํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. (๋๋ ๋น์ทํ ๊ฒ)
@legalsylvain ๋๋ ์ฒซ ๋ฒ์งธ ์์ ์ฌ์ฉ์ ๋ฐ์ํ์ต๋๋ค. @oca.groups
๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
@legalsylvain ์ข์ ์๊ฐ์ ๋๋ค!
์ฐจ๋ผ๋ฆฌ ๋ชจ๋ oca ํจํค์ง์์ ์ฌ์ฉํ ์์๋ ๋ค์ ์คํ์ด์ค ํจํค์ง๋ก 'oca'๋ฅผ ์ ์งํ๊ณ ์ถ์ต๋๋ค. ์ด ์ ํจํค์ง์ ์ด๋ฆ์ 'oca-decorator'๋ก ์ง์ ํ ์ ์์ต๋๋ค. ์ด ํจํค์ง๋ 'oca.decorator'(๋๋ oca.xyz)๋ฅผ ์ ๊ณตํฉ๋๋ค.
from oca.decorator import groups
@groups(..)
def function_name():
์ฝ groups
์๋ฅผ ๋ค์ด allowed_groups
๊ฐ์ด ๋ ๋ช
ํํ ์ด๋ฆ์ ์ ํธํฉ๋๋ค.
lmi
@lasley ์ด๊ฒ์ ์ ์ ์ฅ์ / PSC์ ๋ํ ํ๋ก์ธ์ค๊ฐ ์ง์ ๋ ์์ ์ ๋๋ค : https://odoo-community.org/web#id = 264 & view_type = form & model = project.task & action = 468 & active_id = 2
Omg ๊ฐ์ฌํฉ๋๋ค Pedro! ์ด๋ค ์ด์ ๋ก ํ๋ก์ ํธ์์ Repo๊น์ง ๋ชจ๋ ๊ฒ์ ๊ฒ์ํ์ง๋ง "PSC"๋ฅผ ํฌํจ ํ ์๊ฐ์ํ์ง ์์์ต๋๋ค. Derp!
๊ทธ๋๋ OCA GitHub์ ๋ํ ์ถ๊ฐ ๊ถํ์ด ํ์ํฉ๋๋ค. ์ ๋ฒํผ์ด ์์ต๋๋ค.
์ญํ ์ ๋ณ๊ฒฝ ํ์ผ๋ ์ง๊ธ ๋ค์ ์๋ํ์ธ์.
@lasley @pedro ์ python-oca
? ์ด ์ด๋ฆ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ํ์ด์ฌ ํจํค์ง์ ์ด๋ฆ์ ์ด๋ป๊ฒ ์ง์ ํ ๊ณํ์
๋๊น?
@lmignon- ๋๋ ์ ์์ ์์ฒญํ๊ณ ์ด๊ฒ์ด ์ต๊ณ ์ ๊ฒ์ด์๋ค. ํ์ด์ฌ ํจํค์ง์ ์ด๋ฆ์ ๋น์ทํฉ๋๋ค.
๋ฌด์จ ์๊ฐ์ด์ผ? ๋๋ ๋ชจ๋ ๊ท์ ๋๋ค.
@lasley ๋์ ์ฃผ๋ ๊ด์ฌ์ฌ๋ ๋ชจ๋ ธ ๋ฆฌํฑ ํ์ด์ฌ ํจํค์ง์ ์์ฑ์ ํผํ๋ ๊ฒ์ ๋๋ค. ์๋ก์ด ์ ๋ฌธ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ฃผ์ ๋ชฉํ๋ผ๋ฉด ์ oca-decorator๊ฐ ์๋๋๋ค. ์ด๋ฆ์ ํจํค์ง์ ํฌํจ ๋ ๊ธฐ๋ฅ ๋ฒ์ ๋๋ ์ํ๋ ํญ๋ชฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ผํฉ๋๋ค. ์ต์ํ ์ด๋ฆ์ ์๋ฏธ๊ฐ ์์ด์ผํฉ๋๋ค. IMO 'python-oca'๊ฐ ๋๋ฌด ๋์ต๋๋ค.
๋๋ oca-decorator
๋ฅผ ์ ์๊ณ ์์ง๋ง, ์ฐ๋ฆฌ๋ ๋ชจ๋์ ์กฐ๊ธ ๋ค๋ฅด๊ฒ ๊ตฌ์กฐํ ํ ํ์๊ฐ ์์ง๋ง, ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ๋ค์ ์คํ์ด์ค์์ ์ต์์ ๋ ๋ฒจ๋ก ๋ง๋ค๊ธฐ ์ํด ์๊ฐํฉ๋๋ค. ์๋ ๊ทธ๋ ๊ฒํ๋ค๊ณ ํ์ ํ์ง๋ง LasLabs / python-oca # 1์์ oca.helpers
๋ก ๋ค์ ๋ฐ์ด ๋ฃ์์ต๋๋ค.
์ด์จ๋ ๊ทธ ๋ณํ๋ฅผ ๋ง๋๋ ๊ฒ์ ์ถฉ๋ถํ ์ฌ์ฐ ๋ฉฐ, ์ฝ๋์ ๋งฅ๋ฝ์์ ๋ ผ์ํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ repo๋ฅผ ๋ง๋ค์์ ๋ PR์ ์ ์ถํ๊ณ ์ ์์ ํฌํจ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด์ด ํ์ด์ฌํน ๋ PR ๋์ ์ปจํ ์คํธ์์ ๋ ผ์ ํ ์ ์์ต๋๋ค.
@lasley oca
๋ค์ ์คํ์ด์ค๋ ๋น์ด ์์ด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ผํ ๋ค์ ์คํ์ด์ค ์๋์ ๋ค๋ฅธ ํ์ด์ฌ ํจํค์ง๋ฅผ ์์ฑ ํ ์ ์์ต๋๋ค.
์๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก helpers
ํจํค์ง์ ์ด๋ฆ์ decorators
๋ก ๋ณ๊ฒฝ ํ ๋ค์ Python ํญ๋ชฉ์ ๋ํ ์คํค๋ง๋ฅผ ํธ์ถํ ๊น์? ์ด๋ก ์ : oca-package-sub
== oca.package.sub
์ : ์์ : ๊ทธ๊ฒ ์์ด๋์ด์ผ.
๋๋ฌด ๋์ ocapi
์ด (๊ฐ) ์ฌ์ฉ๋์์ต๋๋ค. : smile_cat :
์ด ์ฝ๋์ ๊ตฌ์กฐ์ ๋ํ ์ง๋ฌธ์ด ์์ต๋๋ค. (๋ด ์ง๋ฌธ์ด ๊ด๋ จ์ด ์์ ์๋ ์์ต๋๋ค, ์ฃ์กํฉ๋๋ค)
๊ธฐ๋ณธ์ ์ผ๋ก์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
A) ๊ธฐ์กด odoo ๋ชจ๋์ ํตํด (๊ธฐ์กด ๋๋ ์ ์ ์ฅ์์์). ๊ทธ๋์ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋
from odoo.addons.my_oca_lib_in_module import my_decorator
B) ํ์ด์ฌ lib๋ฅผ ํตํด.
์ฌ๋ฌ๋ถ ๋ชจ๋ ์๋ฃจ์
"B"์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌผ๋ก ๋ ๊นจ๋ํ ์๋ฃจ์
์
๋๋ค.
๊ทธ๋ฌ๋ ๋ค๋ฅธ ํํธ์ผ๋ก๋ ๊ทธ๋ฌํ ๊ธฐ์ ์ด ์๋ก์ด oca-python lib์ ์์กดํ๋ ๋ชจ๋์ ์ฌ์ฉํ๋ ๊ธฐ์ ์ด์๋ ์ผ๋ถ ์ฌ์ฉ์๋ฅผ ์ฐจ๋จ ํ ๊น ๋ด ๊ฑฑ์ ๋ฉ๋๋ค. UI๋ฅผ ํตํด ๋ชจ๋์ ์ค์นํ๊ฑฐ๋ odoo.sh๋ฅผ ํตํด ๋ค๋ฅธ ๋ชจ๋์ ์ค์นํ๋ ์ฌ๋๋ค์๊ฒ ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค (๊ทธ๋ฆฌ๊ณ ๋ด์ผ OCA ์ฑ ์คํ ์ด์์!). ๋ชจ๋ ํธ์คํ
์์คํ
์ด ์ฌ์ฉ์ ์ง์ Python lib๋ฅผ ์ฝ๊ฒ ์ค์นํ ์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ผ๋ถ ์ฌ์ฉ์์๊ฒ๋ ์ค์นํ ์์๋ ์ถ๊ฐ lib์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์ฌ์ฉ์๊ฐ OCA ๋ชจ๋์ ์ค์นํ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ฉด ์ ๊ฐ์
๋๋ค.
๋น๋ถ๊ฐ OCA์๋ ๋จ ํ๋์ ๋ค๋ฅธ ์๊ฐ ์์ต๋๋ค. openupgradelib. ์ฝ๋๋ ์ฒ์์ OpenUpgrade ํ๋ก์ ํธ์ ์์๊ณ ์ธ๋ถ python-lib๋ก ์ด๋๋์์ต๋๋ค. ๋์๊ฒ๋ ์ ๊ทธ๋ ์ด๋๋ฅผ ๋ง๋๋ ๊ฒ์ด ๊ธฐ์ ์ ์ธ ์ผ์ด๊ธฐ ๋๋ฌธ์ openupgradelib์ ์ฐจ๋จ ์ง์ ์ด ์๋๋๋ค.
์ด๋ป๊ฒ ์๊ฐํด ?
Odoo.sh๊ฐ pip ์ข ์์ฑ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๊น?
IMO ์ด๊ฒ์ ๋งค๋ํ์คํธ์์ external_depencies
ํค๋ฅผ ์์ ํ๊ธฐ์ํ ๊ฒ์
๋๋ค-์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ๋ง์ ๋ชจ๋์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋์ด barcodes_generator_abstract
์๊ตฌํ๋ barcode
barcodes_generator_abstract
์ ๋ค๋ฅผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
Odoo.sh (๋๋ ํ๋์ค ์ธ์ ๊ฒฝ์ฐ Odoo.hs)๋ ๋ค์ Runbot์ ๋๋ค. ๋ด๊ธฐ.
๐ ๊ทธ๋ ์ฐ๋ฆฌ๋ ๋ด ๋ฒ ํ ์ด ์ด๋์ ์๋์ง ์๊ณ
์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ๋ง์ ๋ชจ๋์ ๊ฐ์ง๊ณ ์์ต๋๋ค (@lasley์ ์ํด)
์ฌ์ค, ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์์ฃผ ๋ค๋ฆ
๋๋ค. ๋ฌผ๋ก ๋ฐ์ฝ๋ ์์ฑ์ ์ฒ๋ฆฌํ๋ ์์คํ
์ ์ํ๋ค๋ฉด barcode lib๋ฅผ ์ค์นํด์ผํฉ๋๋ค. ๋ณํ ๋ฑ๋ ๋์ผํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋งค์ฐ ์ ํ์ ์ด๋ฉฐ ์๋ง๋ ์ธ๊ณ์ ์ผ๋ถ ์ฌ์ฉ์๋ ํ ์ ์๊ฑฐ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฌํ ๋ชจ๋์ ์ค์นํ์ง ์์ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ๋์์ด ์์ต๋๋ค. ๋ฐ์ฝ๋ ์์ฑ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ฐ์ฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์ฌ๊ธฐ๋ ๋ค๋ฆ ๋๋ค. ๋ฐฉ๊ธ OCA ์ฝ๋ ์์ค ๋ถ์์ ์ ๋ฐ์ดํธํ์ต๋๋ค. ์ค๋๋ ์๋ 4182 ๊ฐ์ ๋ชจ๋์ด ์์ต๋๋ค. (๋ ์ด์ ํ์์๋ ๋ชจ๋์ ๋ ๋ฒ ๊ณ์ฐ๋ฉ๋๋ค). ๋ฐ๋ฉด์ ๋ชจ๋ 4182 ๋ชจ๋์๋ 274 ๊ฐ์ ํ์ด์ฌ ์ข ์์ฑ ๋ง ์์ต๋๋ค. ๋ฐ๋ผ์ OCA ๋ชจ๋์ 94 %๋ ์ธ๋ถ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ์ง ์๊ณ ๋งค์ฐ ์ฝ๊ฒ ์ค์นํ ์ ์์ต๋๋ค. ์ธ๋ถ ์ฌํญ :
๋ด์ผ ์ ์ฉํ ๋ฐ์ฝ๋ ์ดํฐ๊ฐ์๋ ์ข์ ์ถ๊ฐ oca python lib๊ฐ ์๋ค๋ฉด (๋ณด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ด ์ค๋ ๋์์ ์ค๋ช ํ๋ ค๊ณ ํ๋ ๊ฒ๊ณผ ๊ฐ์) ๋๋ถ๋ถ์ OCA ๋ชจ๋์ ๋จ๊ณ๋ณ๋ก์ด lib์ ์์กดํฉ๋๋ค.
OCA์ ๋ชฉ์ ์ OCA ํ์๋ค์ ์์ ์ ์ด์งํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๊ทธ๋ฌํ ๊ฒฐ์ (์ค์นํ lib ์์ฑ)์ด ์ฌ๋๋ค์ด OCA ๋ชจ๋์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ์ค์ธ๋ค๋ฉด ๋น๋ถ๊ฐ์ด ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ฉด ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋จผ์ ํด๋์ ๋ชจ๋์ ์ฌ์ฉ ํ์ฌ ์์ oca-decorator ์ ์ฅ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 1/2 ๋ ์์ ์ฑ์ํ๊ณ ๋ฐฐํฌ ๋ฐ ํธ์คํ ์์คํ ๋ ์ฑ์ํ๋ฉด (*) ๋ชจ๋ ์ฝ๋๋ฅผ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฃ๋ ๊ฒ์ด ๋งค์ฐ ์ฝ์ต๋๋ค.
openupgrade ์ฝ๋๋ ๋ช ๋ ๋์ openupgrade ์ ์ฅ์์ ์์์ผ๋ฉฐ ์ต๊ทผ @StefanRijnhart์ ์ํด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค์ ๋์์ต๋๋ค. ์ด ๋ณํ๋ ํฐ ๋ฌธ์ ๊ฐ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
(*) : ํธ์คํ ๋ฐ ๋ฐฐํฌ ์์คํ ์ ์ง๋ ๋ช ๋ ๋์ ๋ง์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. (bzr๋ก ์ฝ๋ ๊ฐ์ ธ ์ค๊ธฐ, github๋ก ์ฝ๋ ๊ฐ์ ธ ์ค๊ธฐ, ๋น๋ ์์ ๊ธฐ์ ์ฌ์ฉ, ์ต๊ทผ์๋ pypi ๋ฐฐํฌ)
@ OCA / board๊ฐ ๊ทธ ์ ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ๋์ง ๋ฃ๊ณ ์ถ์ต๋๋ค. ๊ธฐ์ ์ ์ธ ๊ฒฐ์ ์ผ๋ฟ๋ง ์๋๋ผ ์ ๋ต์ ๊ฒฐ์ ์ด๊ธฐ๋ํฉ๋๋ค.
์ด์ https://github.com/OCA/oca-decorators ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก์ด RFC๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
@legalsylvain- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค๊ธฐ ์ ์ ์๋ api.foreach
์ ๋ํ ๋ชจ๋์ ์ ์ถํ์ต๋๋ค. ์ด PR์ ์ดํด๋ณด๋ฉด์ด ์ ๋ต์ ํฌ๊ธฐํ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค.
60-70์์ธ ๊ฐ์ ธ ์ค๊ธฐ ๊ฒฝ๋ก์ ๊ฐ ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ๋๋ฌ์ผ try / except๋ฅผ ๊ณ์ฐํ ๋ API ์ฌ์ฉ์ ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ์ต๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋์ ์ฑํ์ 0์ผ๋ก ๋ง๋ค ๊ฒ์ ๋๋ค-๊ฐ์ ธ ์ค๊ธฐ๋ ๋ ์ฝ๋ ๋ฃจํ๋ณด๋ค ๋ ์ด๋ ต์ต๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ ์ฐ๋ฆฌ์ try / except ์ ๋ต์ ๋ฐ์ฝ๋ ์ดํฐ์ ํจ๊ป ๋น์ฐธํ๊ฒ ์คํจํ์ง๋ง ๊ทธ๊ฒ์ ์์ ํ ๋ค๋ฅธ ์ฃผ์ ์
๋๋ค. ๋ค์ ๋งํ์ง๋ง Odoo๊ฐ external_dependencies
ํค๋ฅผ ์์ ํ์ผ๋ฉดํฉ๋๋ค.
@dreispt- ๊ธฐ์กด ํ ๋ก ์ ๋ค๋ฅธ ์ ์ฅ์๋ก ์ฎ๊ธฐ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์ฌ๊ธฐ์๋ ์ ๋์ ์ผ๋ก ๋์ด๊ฐ ์ง ํ์ ํ ์์๋ ๋ง์ ์ ์ด ๋ ธ์ถ๋์ด ์์ต๋๋ค.
60-70์์ธ ๊ฐ์ ธ ์ค๊ธฐ ๊ฒฝ๋ก์ ๊ฐ ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ๋๋ฌ์ผ try / except๋ฅผ ๊ณ์ฐํ ๋ API ์ฌ์ฉ์ด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ์ต๋๋ค.
๋๋ ๊ทธ ํด๊ฒฐ์ฑ ์ ํ์ํ ๊ฒ์ ์ ์ธํ๊ณ ์๋๊ฐ ๋ฌด์์ธ์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค.
oca @ foreach ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด oca_api lib ๋๋ ๋ชจ๋์์ ์ ์ํฉ๋๋ค. :
Lib ์๋ฃจ์
์ ์ํฅ
๋ฐฐํฌ :
๋งค๋ํ์คํธ ํ์ผ :
'external_dependencies': {'python': ['oca_api']}
Python ํ์ผ :
from oca_api import oca
๋ชจ๋ ์๋ฃจ์
์ ์ํฅ
๋ฐฐํฌ :
๋งค๋ํ์คํธ ํ์ผ :
'depends': ['oca_api'],
Python ํ์ผ :
from odoo.addons.oca_api import oca
์๋๋ฉด ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์ณค์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ ๋ฅผ ์์ ํ์ญ์์ค.
๊ฐ์ฌํฉ๋๋ค.
๋๋ ๊ทธ ํด๊ฒฐ์ฑ ์ ํ์ํ ๊ฒ์ ์ ์ธํ๊ณ ์๋๊ฐ ๋ฌด์์ธ์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค.
try / except๋ ํต์ฌ Odoo๊ฐ ์๋ ๊ฒ์ ๊ฐ์ ธ์ฌ ๋ ์ํํด์ผํ๋ ์์ ์ด๋ฏ๋ก ์์ ๋ ๋์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
try:
from oca_api import oca
except ImportError:...
try:
from odoo.addons.oca_api import oca
except ImportError:...
ํ์ง๋ง ์, ๋ชจ๋ ์ด๋ฆ์ ์ง์ ํ๋ฉด ๋ด ๊ฒ๋ง ํผ ๋์์ง ์์ต๋๋ค.
์ด ์ค ๋ง์ ๋ถ๋ถ์ด ๋ชจ๋์ด DB์ ์ค์น๋์ง ์๊ณ ๋๋ถ๋ถ์ ๋ชจ๋์ฒ๋ผ ํ๊ฒฝ์ ์บก์ํ๋์ง ์๋๋ค๋ ์ฌ์ค๊ณผ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ๋ชจ๋์ ๋ช ์ ์ ์ผ๋ก ์ค์นํ์ง ์์ ํ๊ฒฝ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ ๋ฌธ์ (๋ณด์ ๋๋ ๊ธฐํ)๋ก ๊ฐ์ฃผ ๋ ์ ์์์ ์๋ฏธํฉ๋๋ค.
@lmignon์ ๋ฐฉ๊ธ https://github.com/OCA/webhook/pull/3#issuecomment -336935193์์ ์์ ์ ์ฌํ ์ธ์๋ฅผ ๋ ธ์ถํ์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ๋ณ๋ ฌ ๋ํ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ด์ ๊ฐ์ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋น๋ฑํฉ๋๋ค.
๋๋ ๊ฐ์ธ์ ์ผ๋ก @lmignon ์ด ๋ฐ๋ก ์ฌ๊ธฐ์ ์์ผ๋ฉฐ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ lib๋ก ์ ๊ณตํด์ผํ๋ค๊ณ ๋๋๋๋ค. IIRC์ ์กฐ์ธ์ ์ ๊ฐ foreach
๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ๋ชจ๋์์ ์ฎ๊ธด ์ฃผ๋ ์ด์ ์์ต๋๋ค.
์๋ ํ์ธ์ @lasley.
๊ฐ์ฌํฉ๋๋ค! ๋ชจ๋์ ๋ํ ์ข ์์ฑ์ ๋ง๋๋ ๊ฒ์ผ๋ก ๋ชจ๋์ด ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ๊ธฐ์ ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํ์ง๋ง ๋ชจ๋ OCA ์ฝ๋๋ฅผ ๋ถ์ํ๋ฉด์ ์ฌ๋ฌ๋ถ์ด ๋งํ๋ ๋ด์ฉ์ ์ํ์ ๋ง์ด ๋ณด์์ต๋๋ค. (report_xls ๋ฐ ์ปค๋ฅํฐ์ ๋ํด ๋ง์ด).
๋ชจ๋๋ก ์ธํด ๋ณด์ ๋ฌธ์ ๋ฅผ ์ดํดํ ์์๋ ๊ธฐ์ ์ด ์์ต๋๋ค. ๋๋ฅผ ์ํด ๋ชจ๋์ด ์ค์น๋์ด ์์ง ์๋ค๋ฉด oca_api ๋ชจ๋์ ์ฝ๋๋ฅผ ํธ์ถํด์๋ ์๋ฉ๋๋ค. ํ์ง๋ง ๋ด๊ฐ ํ๋ ธ์ ์๋ ์์ต๋๋ค.
๋ฌธ์ ์ธ์ฌ.
๋๋ ๋ชจ๋์ ์์กดํ๋ ๊ฒ์ผ๋ก ๋ชจ๋์ด ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ๊ธฐ์ ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์์ธํ ๋ด์ฉ์ https://github.com/odoo/odoo/pull/14850 ์ ์ฐธ์กฐํ์ญ์์ค.
๋๋ฅผ ์ํด ๋ชจ๋์ด ์ค์น๋์ด ์์ง ์๋ค๋ฉด oca_api ๋ชจ๋์ ์ฝ๋๋ฅผ ํธ์ถํด์๋ ์๋ฉ๋๋ค.
๊ฑฐ๊ธฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ต๋๋ค. Odoo๋ addons
๊ฒฝ๋ก ๋ด์ ๋ชจ๋ ๋ชจ๋์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ต๋๋ค. ์ด๋ก ์ธํด ๋ชจ๋์ ๋ํ ๊ฐ์ ธ ์ค๊ธฐ๋ ์ข
์ ํญ๋ชฉ์ด ์ค์ ๋ก ์ค์น๋์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ชจ๋ ๋ชจ๋์์ ์ฑ๊ณตํฉ๋๋ค.
์ด๊ฒ์ Odoo์ ํต์ฌ์ด๋ฉฐ ํ์ค์ ์ผ๋ก ์ฐํ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ Odoo SA์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ณ ๊ฐ์ ๊ณต๋ ํธ์คํ ํ์ง ์๋ ์ด์ ์ด๊ธฐ๋ํฉ๋๋ค. Odoo.sh๋ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋์ง ๊ถ๊ธํฉ๋๋ค.ํ์ง๋ง ๋ด ์๊ฐ์๋ SaaS์์ ์์ ๋๋ฑ ๊ฑฐ๋ฆฌ๋ ์๊ฐ ํญํ์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
์ด ๋ชจ๋ ์ค๋ช
์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. odoo / odoo # 14850์ด ํ์ฉ๋์ง ์๋ ๊ฒ์ ์ ๊ฐ์
๋๋ค.
๋๋ ์ฌ์ ํ ์ธ๋ถ lib์ ๋ฐ๋ผ ๋ง์ OCA ๋ชจ๋์ ๋ง๋๋ ๊ฒ์ด ์ด๋ฌํ ๋ชจ๋์ ์ฌ์ฉ์ ํ์คํ ์ ํ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง ๋ชจ๋์ ์ค์ ๋ก ํด๊ฒฐ์ฑ
์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทํ์ ํต์ฐฐ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๋ซ์ต๋๋ค. (https://github.com/OCA/oca-decorators/issues/7๋ก ์ด๋)
๋ชจ๋ ์๊ฒฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ฌด ๋์
ocapi
์ด (๊ฐ) ์ฌ์ฉ๋์์ต๋๋ค. : smile_cat :