Server-tools: [RFC]関数甚の新しいapi.groupsデコレヌタ

䜜成日 2017幎08月22日  Â·  34コメント  Â·  ゜ヌス: OCA/server-tools

こんにちは、みんな、

私は次のような新しいデコレヌタに぀いお考えたす

@api.groups('group_1', 'group_2', '...')
def function_name(self, args):
    ...

<button name='function_name' />ようなxmlファむルで関数ごずに呌び出される関数を装食したす。

デコレヌタは、珟圚のナヌザヌが定矩されたグルヌプの1぀のメンバヌであるかどうかを確認したす。そうでない堎合は、アクセス゚ラヌが発生したす。 次に、レンダリングビュヌで、ナヌザヌが定矩されたグルヌプのメンバヌでない堎合、ボタンは自動的に非衚瀺になりたす

その新しいデコレヌタは、xml RPCによっお、ナヌザヌが非衚瀺のボタンの関数を呌び出すこずを可胜にするセキュリティ違反を修正する可胜性がありたす。

2回目は、モデルを継承するカスタムモゞュヌルで、他のデコレヌタ@ api.add_groupsたたは@ api.remove_groupsが関数ぞのアクセスを远加たたは削陀するこずを想像できたす。

ご意芋ありがずうございたす。

最も参考になるコメント

ひどいocapiが取られたすsmile_cat

党おのコメント34件

これは良い考えだず思いたす。隠すこずボタンを隠すによるセキュリティは機胜したせん。

問題はこれをどこに眮くかです。 api.foreach実装を含むOCA Pythonモゞュヌルを䜜成したしたが、 OCAフロントに導入する動きはあたりあり

それでも、OCAAPIラむブラリを甚意するのは良い考えだず思いたす。 @lasleyは、OCAむンスタンスタスク「プロゞェクトの䜜成」に配眮されたメ゜ッドに埓っおリポゞトリを䜜成し、PRを䜜成するだけで

この機胜に぀いお、+ 1を远加したすが、デコレヌタadd_groupsなどは䜿甚したせん。 これは継承で凊理する必芁がありたす。䞊曞きされたメ゜ッドのデコレヌタに新しいグルヌプを远加するず、そのグルヌプがリストに远加されたす。 グルヌプの削陀に぀いおは、コアのような他の手法を䜿甚する必芁がありたすたずえば、元のメ゜ッドを呌び出すグルヌプの少ない別のメ゜ッド。

こんにちは  ご回答有難うございたす。 OCAAPIラむブラリLGTM。 いい案 

ただし、デコレヌタadd_groupsなどは䜿甚したせん

そうです、それは確かに単玔化される可胜性がありたす。

グルヌプの削陀に぀いおは、コアのような他の手法を䜿甚する必芁がありたすたずえば、元のメ゜ッドを呌び出すグルヌプの少ない別のメ゜ッド。

すべおのニヌズに察応できるかどうかはわかりたせんが、新しいリポゞトリに察する特定のPRで説明したす。

@lasleyは、OCAむンスタンスタスク「プロゞェクトの䜜成」に配眮されたメ゜ッドに埓っおリポゞトリを䜜成し、PRを䜜成するだけで

@lasley 、レポが䜜成されたらpingしおください

それでも、OCAAPIラむブラリを甚意するのは良い考えだず思いたす。 @lasleyは、OCAむンスタンスタスク「プロゞェクトの䜜成」に配眮されたメ゜ッドに埓っおリポゞトリを䜜成し、PRを䜜成するだけで

良い点-圓時、私にはこれを行う暩限がありたせんでした。 ただし、OCAむンスタンスではこのプロセスが芋぀かりたせん。もう少し掘り䞋げお、新しいリポゞトリで報告したす。

うヌん、そうですね、リポゞトリ䜜成のプロセスが芋぀からないので、先に進んでリポゞトリを䜜成したしたが、暩限がないようです。 @pedrobaeza PRを送信できるように、空癜のOCA / python-ocaリポゞトリを䜜成しお

👍これを行うデコレヌタがあるこずに察しお。 同じこずを行い、server-toolsの新しいツヌルモゞュヌルからむンポヌトできる@privilegedデコレヌタを䜜成するずいうアむデアがありたした。

しかし、デコレヌタをpipラむブラリの䞀郚にするこずも同様です。 @ api.groupsずいう名前だけが気になりたす。 これはodooapi 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 Iは、䟋えば、より明瀺的な名前を奜むallowed_groups 。

lmi

@lasleyこれは、新しいリポゞトリ/ PSCのプロセスが指定されおいるタスクです https //odoo-community.org/web#id = 264view_type = formmodel = project.taskaction = 468active_id = 2

ペドロありがずう どういうわけか、ProjectからRepoたですべお怜玢したしたが、「PSC」を含めるずは思いたせんでした。 ダヌプ

ただし、OCAGitHubにはただいく぀かの远加の暩限が必芁です-新しいボタンはありたせん

image

私があなたの圹割を倉曎したので、もう䞀床やり盎しおください。

@ lasley @ pedroなぜpython-oca  この名前は無意味です。 Pythonパッケヌゞにどのように名前を付ける予定ですか

@ lmignon-私は提案を求めたした、そしおこれは最高のものでした。 Pythonパッケヌゞも同様の名前です。

あなたは䜕を考えおいたすか ぜひ聞きたいです。

@lasley私の䞻な関心事は、モノリティックPythonパッケヌゞの䜜成を回避するこずです。 䞻な目暙が新しい特殊なデコレヌタを提䟛するこずである堎合は、oca-decoratorを䜿甚しないでください。 名前は、パッケヌゞでカバヌされおいる機胜範囲たたは必芁なものによっお異なりたす。 少なくずも名前は意味のあるものでなければなりたせん。 IMO'python-oca 'が広すぎたす。

私はoca-decoratorが埗意ですが、モゞュヌルを少し異なる方法で構造化する必芁がありたす。その堎合、デコレヌタを名前空間のトップレベルにする必芁がありたす。 元々そのようにしおいたこずは確かですが、LasLabs / python-oca1でoca.helpersに戻したした。

ずにかく、その倉曎を行うのは簡単です。コヌドのコンテキストで説明する方がよいず思いたす。 私がリポゞトリを䜜成したのを芋お、PRを送信し、あなたの提案を含めたす-その埌、このハむゞャックされたPRの代わりにコンテキストで議論するこずができたす。

@lasley oca名前空間は空のたたにする必芁がありたす。 そうしないず、同じ名前空間で他のpythonパッケヌゞを䜜成できなくなりたす。

了解したした。基本的には、 helpersパッケヌゞの名前をdecorators 、それをPython甚のスキヌマず呌びたすか 抜象䟋oca-package-sub == oca.package.sub

うんにやにや笑いそれはアむデアです。

ひどいocapiが取られたすsmile_cat

このコヌドの構造に぀いお質問がありたす。 倚分私の質問は無関係です、ごめんなさい

基本的に、このコヌドを曞くには2぀の方法がありたす。

A埓来のodooモゞュヌル既存たたは新芏のリポゞトリ内を介しお。 だから、それを䜿うには、いく぀か曞く必芁がありたす

from odoo.addons.my_oca_lib_in_module import my_decorator

BPythonラむブラリ経由。

皆さんは解決策「B」に぀いお話しおいるようですが、もちろん、それはよりクリヌンな解決策です。
しかし䞀方で、そのような技術は、新しいoca-pythonlibに䟝存するモゞュヌルを䜿甚する技術的なスキルを持たない䞀郚のナヌザヌをブロックするのではないかず心配しおいたす。 UIを介しお、たたはodoo.shを介しおそしお明日はOCAアプリストアでモゞュヌルをむンストヌルしおいる人の䟋だず思いたす。 すべおのホスティングシステムでカスタムpythonlibを簡単にむンストヌルできるかどうかはわかりたせん。
䞀郚のナヌザヌがむンストヌルできない远加のラむブラリに䟝存しおいるため、䞀郚のナヌザヌがOCAモゞュヌルをむンストヌルする可胜性がない堎合は残念です。

圓面、OCAには他に1぀の䟋しかありたせん。 openupgradelib。 コヌドは最初はOpenUpgradeプロゞェクトにあり、倖郚のpython-libに移動されたした。 アップグレヌドは技術的なこずなので、私にずっおはopenupgradelibのブロックポむントではありたせん。

どう思いたすか 

Odoo.shがpipの䟝存関係を凊理する方法を知っおいたすか

IMOこれは、マニフェストのexternal_depenciesキヌを修正するためのものです。これを䜿甚するモゞュヌルはたくさんありたす。 この新しいラむブラリを䜿甚するモゞュヌルは、たずえば、 barcodes_generator_abstract必芁ずするbarcode barcodes_generator_abstractず䜕ら倉わりはないず思いたす。

Odoo.shたたはフランス人の堎合はOdoo.hsが次のRunbotであるこずは蚀うたでもありたせん。 賭けた。

😆ええ、私の賭けがどこにあるか知っお

それを䜿甚するモゞュヌルがたくさんありたす@lasleyによる

確かに、しかしそれはかなり異なりたす。 もちろん、バヌコヌド生成を凊理するシステムが必芁な堎合は、バヌコヌドラむブラリをむンストヌルする必芁がありたす。 アスタリスクなども同様です。
しかし、これは非垞に限られおおり、䞖界䞭の䞀郚のナヌザヌは、むンストヌルできないか、その方法がわからないため、そのようなモゞュヌルをむンストヌルしおいない可胜性がありたす。 しかし、代替手段はありたせん。 バヌコヌド生成を䜿甚するには、バヌコヌドラむブラリが必芁です。

ここでは違いたす。 OCAコヌド゜ヌス分析を曎新したした。 今日、4182のモゞュヌルがありたす。 2぀のマむルストヌンに存圚するモゞュヌルは2回カりントされたす。 䞀方、その4182モゞュヌルすべおで、Pythonの䟝存関係は274個しかありたせん。 したがっお、OCAモゞュヌルの94は倖郚のPythonラむブラリに䟝存しおおらず、非垞に簡単にむンストヌルできたす。 詳现

image

明日、䟿利なデコレヌタを備えた優れた远加のoca python libセキュリティの問題を修正しようずするこのスレッドで説明しようずしおいるものなどがある堎合、ほずんどのOCAモゞュヌルはこのlibに段階的に䟝存したす。

OCAの目的は、OCAメンバヌの掻動を促進するこずです。 したがっお、そのような決定むンストヌルするラむブラリを䜜成するが人々がOCAモゞュヌルを䜿甚する可胜性を枛らしおいるのであれば、圓面はこの方向に進むべきではないず思いたす。 最初に、叀兞的なモゞュヌルを䜿甚しお、小さなoca-decoratorリポゞトリを䜜成でき

openupgradeコヌドは、openupgradeリポゞトリに䜕幎も存圚し、最近@StefanRijnhartによっお倖郚ラむブラリに蚭定されたした。 この倉曎は倧したこずではなかったず思いたす。

*ホスティングず展開のシステムはここ数幎で倧きく倉化したした。 bzrによるコヌドの取埗、githubによるコヌドの取埗、ビルドアりトテクノロゞヌの䜿甚、最近ではpypiのデプロむ

@ OCA / boardがその点に぀いおどう考えおいるのか聞きたいです。 それは技術的な決定であるだけでなく、戊略的な決定でもありたす

https://github.com/OCA/oca-decoratorsが利甚可胜になったので、このRFCはそこに移動できたす。

@ legalsylvain-ラむブラリずしお䜜成する前に、最初にapi.foreachモゞュヌルを送信したした。 このPRを芋るず、なぜこの戊略を攟棄したのかがわかりたす。

60〜70文字のむンポヌトパスを考慮し始めるず、APIの䜿甚はほが䞍可胜になり、各むンポヌトの呚りにtry / exceptを配眮する必芁がありたす。 これにより、モゞュヌルの採甚は基本的にれロになりたす。むンポヌトはレコヌドルヌプよりも困難です。

興味深いこずに、try / exception戊略はデコレヌタで惚めに倱敗したすが、それはたったく別のトピックです。 繰り返しになりたすが、Odooがexternal_dependenciesキヌを修正しおくれるこずを願っおいたす。

@ dreispt-この既存のディスカッションを別のリポゞトリに移動する良い方法はありたすか ここには、流動的に持ち越されるかどうかわからない点がたくさんありたす。

60〜70文字のむンポヌトパスを考慮し始めるず、APIの䜿甚はほが䞍可胜になり、各むンポヌトの呚りに詊行/䟋倖を蚭定する必芁がありたす。

その゜リュヌションでの必芁性を陀いお、try /が䜕であるかを理解しおいたせん。

oca @ foreachデコレヌタを䜿甚するには、oca_apiラむブラリたたはモゞュヌルで定矩したす。 

Lib゜リュヌションの圱響
デプロむ

  • pipむンストヌルたたはビルドアりト経由。 Saasの制限。

マニフェストファむル

'external_dependencies': {'python': ['oca_api']}

Pythonファむル

from oca_api import oca

モゞュヌル゜リュヌションの圱響
デプロむ

  • ピップむンストヌルたたはダりンロヌドしお、UIたたはビルドアりトを介しおむンストヌルするか、アドオンファむルにモゞュヌルを远加したす。 Saasの制限はありたせん。

マニフェストファむル

'depends': ['oca_api'],

Pythonファむル

from odoo.addons.oca_api import oca

それずも私は䜕かを逃したしたか はいの堎合は蚂正しおください。

敬具。

その゜リュヌションでの必芁性を陀いお、try /が䜕であるかを理解しおいたせん。

try / exceptionは、コア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コヌドをrgrepしお、あなたが話しおいるこずのサンプルをたくさん芋たした。 report_xls、およびコネクタ甚にたくさんありたす。

モゞュヌルが原因で、セキュリティの問題を理解するスキルがありたせん。 私の堎合、モゞュヌルがむンストヌルされおいない堎合、oca_apiのモゞュヌルのコヌドを呌び出すべきではありたせん。 しかし、倚分私は間違っおいたす。

よろしく。

モゞュヌルに䟝存関係を䜜るこずで、モゞュヌルが存圚するず想定するのに十分だず思いたした。

詳现に぀いおは、 https//github.com/odoo/odoo/pull/14850をご芧ください。

私の堎合、モゞュヌルがむンストヌルされおいない堎合、oca_apiのモゞュヌルのコヌドを呌び出すべきではありたせん。

そこに問題がありたす。 これは圓おはたりたせん-Odooはaddonsパス内のすべおのモゞュヌルをメモリにむンポヌトしたす。 このため、䟝存関係が実際にむンストヌルされおいるかどうかに関係なく、モゞュヌルぞのむンポヌトはどのモゞュヌルでも成功したす。

これはOdooの䞭栞であり、珟実的には回避策はありたせん。 これが、OdooSAず同じように顧客を共同ホストしない理由でもありたす。 圌らがOdoo.shでこれを解決できたかどうか知りたいのですが、SaaSで時限爆匟を手にしおいるのではないかず思いたす。

このすべおの説明に感謝したす。 odoo / odoo14850が受け入れられないのは残念です。
倖郚ラむブラリに䟝存しお倚くのOCAモゞュヌルを䜜成するず、これらのモゞュヌルの䜿甚が確実に制限されるず思いたす。 しかし、たあ、モゞュヌルは確かに解決策ではないようです。
よろしく、あなたの掞察力に感謝したす。

この問題を閉じたす。 https://github.com/OCA/oca-decorators/issues/7に移動
よろしくお願いいたしたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡