私はidによって別のコンテンツ(my_item)の複数のインスタンスに結び付けられているコンテンツタイプ(バッチ)を持っています。 my_itemコンテンツタイプには、下書き、保留中、および承認済みのワークフローがあります。バッチを作成し、my_itemコンテンツタイプのインスタンスを「承認」するフォームがあり、my_item_instancesのbatch_idをバッチのバッチID(バッチの作成時に設定)に設定するフォームがあります。承認された状態は、最終状態であり、編集も格納もできません。Plone/Workflow-遷移を必要とせずにワークフローの状態を設定できますか?
my_itemコンテンツタイプインスタンスの状態を下書きに戻す必要があります。アイテムが(サブスクライバを介して)削除されているときに、承認済み状態から元に戻すための遷移がないので、移行を必要とせずにmy_itemsの状態を「ドラフト」に戻す必要があります。
私が試した2つの方法があります。また、
Iに起草する状態を設定するためのワークフローを見つけられませんでした:
加入者がIObjectWillBeRemoved
これはエラー InvalidParaemterErrorになりdef my_item_will_be_removed(obj,event)
my_items = catalog.searchResults('batch_id':obj.batch_id)
for i in my_items:
api.content.transition(obj=i,to_state='pending')
です試しました:
wf_tool = api.portal.get_tool(name='portal_workflow')
wf_tool.setStatusOf('item_workflow',i,'pending')
何らかの理由でmy_itemが文字列になることがあります。
できませんか?それが可能なら、どうすればいいですか?
Offtopicが、私は今のところ使用できる回避策があると思います: ドラフト状態に承認された状態から行くの移行「retract_from_approval」
「can_retract_from_approvalは」に割り当てる必要が作ります、削除イベントには、「バッチ」
を削除my_itemsを反復処理し、現在の反復
上でローカルにバッチを削除する責任の役割に「can_retract_from_approvalの許可を割り当てることができます役割my_items = catalog.searchResults('batch_id',obj.batch_id)
for m in my_items:
mi_obj = m.getObject()
mi_obj.manage_permission('retract_from_approval',['ARole'],obj=mi_obj)
次に、ワークフローツールを使用して、my_itemをドラフト状態に戻す 'retract_from_approval'トランジションを実行します。次に、can_retract_from_approval権限を削除します。
を必要としてください?あなたのコードスニペットはあなたのアイテムに対して 'i'を反復し、' e'でメソッドを呼び出しますが、これはpastoですか? –
編集:私はe = i.getObject()を入れることを意味する –
更新:申し訳ありませんが、私はe = i.getObject()を使用していないことを理解しました。だから私はただの脳だった。それが問題でした。私はそれがタイプミスの結果であったことはごめん。 –