2016-04-19 3 views
2

IRecordModifiedが起動されるはずのレジストリの変更を検出する例を再現しようとしています。plone.registry - IRecordModifiedEventが起動したときに、レジストリの変更をどのように取得するのですか?

https://pypi.python.org/pypi/plone.app.registry#registry-events

は、私は、これは私がやっているものに適応しようとするが、私は置かprint文が発射されていません。コントロールパネルが含まれているモジュールdb_settings.py、で

私のregistry.xmlので

<registry> 
    <records interface="my.product.utils.db_settings.IDBSettings"> 
</registry> 
私events.pyで

from my.product.utils.db_settings import IDBSettings 

@adapter(IDBSettings, IRecordModifiedEvent) 
def detectDBSettingsChange(settings, event): 
    print "detectDBSettingsChange" 

、私が持っている:plone.appから 。 registry.browser import controlpanel

class IDBSettings(Interface): 
    db_string = schema.TextLine(title=u"Database String", 
           description=u"String for database connection", 
           default=u"Some value" 
     ) 

class DBSettingsEditForm(controlpanel.RegistryEditForm): 
    schema = IDBSettings 
    label = u"Database settings" 
    description = u"String setup" 

    def updateFields(self): 
     super(DBSettingsEditForm, self).updateFields() 


    def updateWidgets(self): 
     super(DBSettingsEditForm, self).updateWidgets() 

class DBSettingsControlPanel(controlpanel.ControlPanelFormWrapper): 
    form = DBSettingsEditForm 

私のconfigure.zcml in utils:

<include package="plone.app.registry" /> 
<browser:page 
     name="database-settings" 
     for="Products.CMFPlone.interfaces.IPloneSiteRoot" 
     class=".db_settings.DBSettingsControlPanel" 
     permission="cmf.ManagePortal" 
     /> 

私は、コントロールパネルに移動し、値を変更し、保存し、detectDBSettingsChangeはprint文が無視されるように動作していないようです。レジストリの変更をキャプチャするために間違ったイベントに取り組んでいますか?

答えて

1

で説明したようにおそらくあなたは、あなたが加入者を追加し、あなたのconfigure.zcmlファイルでこのようにそれを登録する必要がありprovideHandlerメソッドを使用することができます。

<configure xmlns="http://namespaces.zope.org/zope"> 

    <subscriber 
     for="plone.registry.interfaces.IRecordModifiedEvent" 
     handler="your.package.your_subscriber" 
     /> 

</configure> 

このa working exampleためcollective.fingerpointingパッケージを確認してください。

+0

こんにちは、私は私の遅い応答をお詫び申し上げます。ありがとうございました。これは私が探していたものです。私はそれを追加することを忘れて、これが私の問題を解決しました。ありがとうございました。 –

2

docsに記載されているような購読者が必要だと思います。 events.pyのアダプタが十分であるかどうかはわかりません。 plone.registry

+0

こんにちは、私は私の遅い応答をお詫び申し上げます。ありがとうございました。それが私が探していたものです。私は、加入者をconfigure.zcmlに追加する手順を忘れていました。 –

関連する問題