我有一個Plone 4站點,它停止重命名新的Archetypes對象;在創建之後(如/temp/portaltype.2015-04-23.1234567890
)並保存第一次更改(包括給它一個標題),它應該被重命名爲更好的東西(/temp/an-object-with-a-meaningful-name
),但這不會再發生。自動重命名新的Archetypes對象(Plone 4)停止工作
也許問題出現了,當我應用一些更改將Plone從4.3.3更新到4.3.4(一次只做一步);但我繼承了很長的versions.cfg
,它是單獨按包名分類的,並且不包含爲什麼選擇某些版本的任何提示...爲什麼選擇某些版本...
我能夠返回兩個月,並有一個版本進行重命名,但沒有更多關於尋找什麼的知識,這將是一個非常耗時的重新應用每一個變化,重建,啓動和測試的過程;但是我的模式定義沒有任何更改。我有一個temp
瀏覽器,它涉及提供主要編輯表單。但這似乎並不適用於保存行動。
可悲的是,我不完全理解尚base_edit
行動應的機制 - 據我瞭解 - 打電話Archetypes.BaseObject.processForm
和隱含._renameAfterCreation
,所以我會很感激一些指導如何調試這一點。謝謝!
更新: 我有我的產品的configure.zcml
,例如:
<subscriber
for=".content.portaltype.PortalType
Products.Archetypes.interfaces.IObjectInitializedEvent"
handler=".events.onInitPortalType"/>
&hellip幾個觸發器;與在events.py
:
def onInitPortalType(self, event):
"""
Called after first edit of new objects?
"""
print '/// onInitPortalType(%(self)r, %(event)r)' % locals()
setInitialOwner(self, event)
setStateToPrivate(self, event)
然而,事件似乎並沒有被觸發,因爲我無法找到在instance fg
會話的輸出。
更新2: 我注意到zope.event
已被釘在一個比較舊版本(3.5.2
),所以我想更新到4.3.4更嚴重的是,現在(following this how-to)。這讓我zope.event
V4.0.3,但我有一個版本衝突現在:
There is a version conflict.
We already have: zc.recipe.egg 1.3.2.
While:
Installing.
Getting section test.
Initializing section test.
Installing recipe zc.recipe.testrunner.
似乎是zc.recipe.egg < 2dev
要求的地方,但我不能找到它。
標誌'_at_rename_after_creation'明確設置爲'True';類型在'@@ types-controlpanel'中可見; 'isIDAutoGenerated'可以正常工作(但在提交表單後不會調用*)。有一些IObjectInitializedEvent訂戶,但不適用於當前檢查的類型。也許我應該添加一個事件函數來明確觸發重命名... – Tobias
我更新了問題。訂閱的funktions似乎沒有被觸發(我嘗試了'print'語句和'pdb.set_trace()')。 – Tobias
我想你需要調試整個堆棧。嘗試在Products.Archetypes _renameAfterCreation方法中啓動,如果這不會被調用,請在您的自定義類型中定義該方法並添加一個斷點。然後嘗試在_processForm中設置一個斷點。 – Mathias