Kotti的设置配置

kotti_settings的Python项目详细描述


将设置配置添加到Kotti站点。build status

Find out more about Kotti

设置

要激活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)

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java更改WSO2 IS证书会导致登录失败   安卓 Java随机行读取   JavaJComboBox留下了一条线索   用于嵌套对象的java Jasper报告   java动态生成Id值时,如何检索复选框的值   “拼接(a,b,…”的Java等价方法在JavaScript方法中   java在有子面板的jPanel上绘图   java生成时,在包“安卓”中找不到属性“text color”的资源标识符   java如何使用maven插件正确地构建Spring引导远jar?   readUTF中的java EOFEException   在Java中,按星期一到星期天进行排序   java MultiFormatReader无法读取qr,尽管qr是可扫描的   替换java字符串中未知数量的值   java将MySQL连接到Apache nutch   Java从3个不同的枚举中获取随机值   java我需要将多个JRadioButtongGroup和一个jcombobox连接到一个jbutton   java Android sqlite异常。无法实例化活动   如何使用单流创建Map<String,List<Long>>Java8?