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 |