Kotti的设置配置
项目描述
设置
要在您的Kotti网站上激活kotti_settings插件,您需要在Paste Deploy配置中的kotti.configurators设置中添加一个条目。如果您没有kotti.configurators选项,请添加一个。在您的[app:main](或[app:kotti],具体取决于您如何设置Fanstatic)部分中的行可能看起来像这样
kotti.configurators = kotti_settings.kotti_configure
该插件为您添加一个新的配置页面,用于保存模块的设置或跨不同模块的设置。它向“网站设置”菜单项添加了一个名为“设置”的新子菜单项。每个设置集合都在一个标签页中展示。它打算使用一个标签页用于一个模块,但如果需要更复杂结构,也可以使用多个标签页。
您可以选择两种模式来设置您的配置。使用“字典模式”,您可以轻松地设置配置。如果您需要更高级的形式,您可以设置自己的模式。
使用字典设置设置选项卡。在此处,您定义了选项卡的名称和标题,以及必需的内容。可选参数包括 success_message、settings 或 schema、schema_factory 和 use_csrf_token。
在字典中定义您的设置
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 文档以获取有关 填充器 的更多信息,以及查看 示例。
在填充器中添加您的设置配置,例如在名为 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 提供了一些默认模式,您可以直接在您的代码中使用,例如用于示例。目前有两个已实现的模式,一个用于选择小部件应显示的插槽,另一个用于设置小部件的可见性。要在您的插件中使用它,请在您的填充器中放置类似以下内容
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)
例如,在插件 kotti_tagcloud 中有一个完整示例。
变更日志
0.3(2016-02-29)
将编辑模板作为设置页面的宏使用。
添加 deform_bootstrap 到需求中,修复 #4。
0.2(2013-11-12)
仅扫描所需的视图文件。
添加 MANIFEST.in 以删除本地文件夹。
0.1(2013-10-19)
为默认模式添加文档。
更改实现以检查哪个设置表单已保存。
添加了新的实用方法“set_setting”,其中处理值转换。
删除了不需要的静态资源。
将表单的内部名称更改为更独特。
在显示选项卡时重新初始化选定的元素。
将布尔值转换为“true”或“false”,以满足 deform 检查框小部件的要求。
0.1b4(2013-05-02)
为默认设置模式之一添加了辅助方法。
仅保存提交的表单中的设置。
将保存的表单设置为活动表单。
添加了仅从特定插槽中删除小部件的可能性。
0.1b3(2013-04-18)
修复:在模式中定义的设置也必须初始化。
0.1b2(2013-04-18)
添加了从插槽中删除小部件的可能性。
添加了两个默认模式,一个用于选择小部件的插槽,另一个用于设置小部件的显示位置。
0.1b1(2013-03-29)
添加了在设置保存前后处理回调的事件处理。
0.1a3(2013-03-13)
仅考虑设置名称的模块本身。
0.1a2(2013-03-11)
添加了 util 方法 get_setting 作为获取设置的默认方式。
0.1a1(2013-03-06)
首次发布。
项目详情
kotti_settings-0.3.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6087bfc203b6389de94c6b74e48415b0c0eb16d7f53221e2e0821f6650cc718e |
|
MD5 | 1f92ded9f1854e802c5db6185d1be97f |
|
BLAKE2b-256 | cabc624582af00bdc1bd6b31b23248711fa610d7bea0b11fbfd04dca3818de38 |