Kotti的设置配置
kotti_settings的Python项目详细描述
设置
要激活kotti站点中的kotti_settings加载项,您需要 在粘贴中的kotti.configurators设置中添加一个条目 部署配置。如果没有kotti.configurators选项, 加一个。您的[app:main](或[app:kotti]中的行,具体取决于 然后,您可以设置fanstatic)部分如下:
kotti.configurators = kotti_settings.kotti_configure
加载项将添加一个新的配置页以保存模块的设置或 跨越不同的模块。它向 菜单点“站点设置”。每个设置集合都显示在一个选项卡中。它 旨在为模块使用一个选项卡,但也可以使用 如果需要更扩展的结构,可以使用多个选项卡。
您可以选择两种模式来设置设置。使用“dict模式” 您有一个非常简单和直接的设置选项。如果你 需要更高级的表单,您可以设置自己的架构。
设置选项卡是用字典设置的。在这里,您定义一个名称和 标签的标题,需要什么。可选参数是成功消息, 设置或架构、架构工厂和使用CSRF令牌。
在字典中定义设置:
TestSettings = { 'name': 'test_settings', 'title': "Testsettings", 'description': "Some description for my settings", 'success_message': u"Successfully saved test settings.", 'settings': [ {'type': 'String', 'name': 'testsetting_1', 'title': 'Test 1', 'description': 'a test setting', 'default': '', }, {'type': 'Integer', 'name': 'testsetting_2', 'title': 'Test 2', 'description': 'again a test setting', 'default': 23, }]}
使用模式定义设置:
class StringSchemaNode(colander.SchemaNode): name = 'a_string' title = 'hello' default = 'hello world' class RangedIntSchemaNode(colander.SchemaNode): name = 'range_int' validator = colander.Range(0, 10) default = 5 title = 'Ranged Int' class TestSchema(colander.MappingSchema): string = StringSchemaNode(colander.String()) ranged_int = RangedIntSchemaNode(colander.Int()) TestSettings = { 'name': 'test_settings', 'title': "Testsettings", 'description': "Some description for my settings", 'success_message': u"Successfully saved test settings.", 'schema_factory': TestSchema }
若要在kotti_settings内注册配置,请添加 加载项中填充器中的设置。查看kotti文档 获取有关populators的更多信息并查看example。
在populator中添加设置配置,例如在名为populate.py的文件中:
def populate(): from kotti_settings.util import add_settings add_settings(TestSettings)
并将其添加到您的配置中:
def kotti_configure(settings): settings['kotti.populators'] += ' my_addon.populate.populate'
或者直接指向您的ini文件:
kotti.populators = my_addon.populate.populate
要将设置恢复到代码中,请使用以下命令:
from kotti_settings.util import get_setting first_test_setting = get_setting('test_setting_1')
事件
在保存设置之前和之后,将触发用于处理更改的事件。认购 对于活动,请使用以下内容:
from pyramid.events import subscriber from kotti_settings.events import SettingsAfterSave @subscriber(SettingsAfterSave) def do_something_when_settings_saved(event): # Check if the settings for this module was saved. if not event.module == __package__: return my_fancy_thing()
默认模式
kotti_settings提供了一些默认模式,您可以直接在代码中使用这些模式 示例目的。目前实现了两个模式,一个用于选择 应显示小部件,并显示另一个小部件以设置小部件的可见性。把它用在你的 在populator中添加如下内容:
from kotti.views.slots import assign_slot from kotti_settings.config import SlotSchemaNode from kotti_settings.config import ShowInContextSchemaNode from kotti_settings.util import add_settings from kotti_settings.util import get_setting from kotti_myaddon import _ class MyWidgetSchema(colander.MappingSchema): slot = SlotSchemaNode(colander.String()) show_in_context = ShowInContextSchemaNode(colander.String()) MyAddonSettings = { 'name': 'myaddon_settings', 'title': _(u'My Addon Settings'), 'description': _(u"Settings for my addon"), 'success_message': _(u"Successfully saved my addon settings."), 'schema_factory': MyAddonSchema, } def populate(): add_settings(MyAddonSettings)
您有一个完整的示例,例如在addonkotti_tagcloud中。
更改日志
0.3(2016-02-29)
- 将编辑模板用作“设置”页的宏。
- 将deform_bootstrap添加到需求,修复了4。
0.2(2013-11-12)
- 只扫描所需的视图文件。
- 已添加manifest.in以删除本地文件夹。
0.1(2013-10-19)
- 为默认模式添加了文档。
- 更改实现以检查保存了哪些设置窗体。
- 添加了新的util方法“set_setting”,用于处理值转换。
- 删除了不需要的Fanstic资源。
- 将表单的内部名称更改为更唯一。
- 显示tab时重新初始化所选元素。
- 将布尔值转换为“true”或“false”以满足deform的复选框小部件的要求。
0.1b4(2013-05-02)
- 为一个默认设置架构添加了帮助器方法。
- 只保存提交表单中的设置。
- 将保存的表单设置为活动表单。
- 增加了只从特定插槽中删除小部件的可能性。
0.1b3(2013-04-18)
- 修复:架构中定义的设置也必须初始化。
0.1b2(2013-04-18)
- 增加了从插槽中删除小部件的可能性。
- 添加了两个默认模式,一个用于选择CT小部件的插槽和一个 设置小部件的显示位置。
0.1b1(2013-03-29)
- 为保存设置之前和之后的回调添加了事件处理。
0.1a3(2013-03-13)
- 设置名称只考虑模块名称本身。
0.1a2(2013-03-11)
- 添加了util method get_设置作为获取设置的默认方式。
0.1a1(2013-03-06)
- 初次发布。