Plone-如何为注册表中字典类型的记录创建控制面板?

2024-03-08

我正在尝试在我的 Plone 站点上创建一个控制面板插件,用于编辑字典类型的注册表记录。

我的目的是将“供应商类型”作为字典存储在注册表中。

我的registry.xml位于profiles/default中:

<registry>
    <record interface="gpcl.assets.suppliertypes.ISupplierTypes" field="supplier_types">
        <value>
            <element key="1">Distributor</element>
            <element key="2">Manufacturer</element>
            <element key="3">Service Provider</element>
        </value>
    </record>
</registry>

我的界面和形式:

class ISupplierTypes(form.Schema):
    """ Define settings data structure
    """

    supplier_types = schema.Dict(title=u"Types of Suppliers",
                                 key_type=schema.Int(title=u"supplier_type_id"),
                                 value_type=schema.TextLine(title=u"supplier_type_name", 
                                                            required=False),
                                 required=False,
                                )

class SupplierTypesEditForm(RegistryEditForm):
    """
    Define form logic
    """
    schema = ISupplierTypes
    label = u"Types of Suppliers"

    description = u"Please enter types of suppliers"


class SupplierTypesView(grok.View):
    """
    View class
    """

    grok.name("supplier-types")
    grok.context(ISiteRoot)

    def render(self):
        view_factor = layout.wrap_form(SupplierTypesEditForm, ControlPanelFormWrapper)
        view = view_factor(self.context, self.request)
        return view()

我将其添加到我的profiles/default 中的controlpanels.xml 和portal_quickinstaller 中,安装该产品,控制面板确实显示在附加组件中,并显示显示默认值的字段。 不幸的是,当我尝试添加、编辑或删除时,会显示一条错误消息,指出“包含的类型错误”。我认为我创建控制面板的方法是错误的。

为字典类型的记录创建控制面板的正确方法是什么?

具有讽刺意味的是,在视图类的渲染方法中,我尝试查看是否可以打印记录(在此处找到了如何执行此操作:https://pypi.python.org/pypi/plone.app.registry#using-the-records-proxy https://pypi.python.org/pypi/plone.app.registry#using-the-records-proxy)并且我能够以字典对象的形式出现。我还能够以编程方式向记录添加新的“元素”。

就我想使用字典类型而言,我确实计划利用键值,这就是我想使用字典类型的原因。

如果我使用了不恰当的术语,我深表歉意。

先感谢您。

Edit:

我正在使用 Plone 4.3.2。

Edit:

对不起我错了。我找到了回溯。

2014-08-20 13:13:07 ERROR Zope.SiteErrorLog 1408554787.930.279058908095
http://localhost:8080/GPCLAssetTracker/@@supplier-types/@@z3cform_validate_field

Traceback (innermost last):
    Module ZPublisher.Publish, line 138, in publish
    Module ZPublisher.mapply, line 72, in mapply
    Module ZPublisher.Publish, line 53, in missing_name
    Module ZPublisher.HTTPResponse, line 741, in badRequestError
    BadRequest:   <h2>Site Error</h2>
    <p>An error was encountered while publishing this resource.
    </p>
    <p><strong>Invalid request</strong></p>

    The parameter, <em>fname</em>, was omitted from the request.<p>Make sure to specify all        required parameters, and try the request again.</p>
<hr noshade="noshade"/>

<p>Troubleshooting Suggestions</p>

<ul>
<li>The URL may be incorrect.</li>
<li>The parameters passed to this resource may be incorrect.</li>
<li>A resource that this resource relies on may be
    encountering an error.</li>
</ul>

<p>For more detailed information about the error, please
refer to the error log.
</p>

<p>If the error persists please contact the site maintainer.
Thank you for your patience.
</p>

我还忘了提,我使用的操作系统是 Xubuntu。


您可以选择not use schema.Dict,但我有时使用不同的方法。请记住,这会很危险:您must为您的附加组件提供卸载步骤,否则如果您稍后删除该附加组件,您的注册表将保持损坏状态。

这两篇文章中是这样描述的:

  • http://blog.redturtle.it/plone.app.registry-how-to-use-it-and-love-it http://blog.redturtle.it/plone.app.registry-how-to-use-it-and-love-it
  • http://blog.redturtle.it/plone-registry-strikes-back http://blog.redturtle.it/plone-registry-strikes-back

简而言之:使用schema.Tuple with schema.Object里面。为了保持使键唯一的字典行为,您必须提供自己的验证器。

另一种好方法(从未使用过)是“重新审视复杂的 Plone 注册表设置”一文中描述的方法,但它似乎从网络上消失了(……非常悲伤……)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Plone-如何为注册表中字典类型的记录创建控制面板? 的相关文章

  • 打印/全屏/电子邮件图标

    在 Plone 2 中 对象视图中有打印 全屏和电子邮件图标 如何在 Plone 4 中启用这些功能 它们似乎不存在于 Plone 4 1 的默认安装中 但我一定缺少一些东西 我想知道什么 Thanks IIRC 可以在 Plone 4 的
  • 在 Plone 构建设置中查找需求规格

    我有一个 Plone 网站 大约 4 2 4 从version txt在根目录中 我想更新到最新版本 我发现这个操作方法 截至目前 4 3 4 我继承了过多的固定版本 这些版本没有记录并且可能已经过时 当评论我的versions cfg u
  • 如何使用 Plone 4 删除编辑模式下的 portlet?

    我习惯在 Plone 3 下通过覆盖 Portal skin 下的 base edit cpt 文件并将列设为空来实现此目的
  • 通过 Dexterity 在字段集之间移动字段

    在 Archetypes 中 为了将字段从字段集 或模式 移动到另一个字段集 或模式 我们可以执行以下操作 schema creators schemata default 然而 我并没有使用敏捷来实现同样的目标 我尝试过使用表单提示 前任
  • 控制对未来内容的访问

    这主要是关于未来的公共内容 但不仅如此 在标准 Plone 站点中 如果您创建的顶级内容未显示在导航上 仍然是私有的 那么您将其公开 通过工作流程 并显示在导航上 但稍后您会在将来计时它再次从导航中消失 不过 此时 如果匿名 登录用户知道
  • 无法在 Centos 上使用 Diazo (plone.app.theming)

    我使用 plone4 1 和 Diazo 在我的 mac 上制作了一个门户网站 现在 我正在尝试将其部署在我的服务器 CentOs 上 其中还有另一个带有 plone4 0 5 Collectivexdv 的站点 当我使用我的重氮主题运行该
  • 如何确定 Python 类的每个属性和方法的定义位置?

    给定 Python 中某个类的实例 能够确定源代码的哪一行将很有用defined每个方法和属性 例如实现1 例如 给定一个模块 ab py class A object z 1 q 2 def y self pass def x self
  • Plone/z3c.form 3.2.1-如何使自动完成小部件(不是必填字段)使用自定义绑定源对象?

    我正在尝试使用绑定的源对象获取自动完成小部件以表单 z3c form 呈现 在接口类中 Parent schema Choice title u A Parent source ParentSourceBinder required Fal
  • Plon:如何对文件夹项目进行排序

    我有一个名为myfolder 里面有一些项目 例如 item1 item2 item3 等等 当我添加 portlet 时Navigation到页面左栏 并输入到文件夹中myfolder 它向我展示了 portlet 上的链接 如下所示 i
  • 对于 genericsetup 导入步骤的名称,是否有一个很好的参考列表

    是否有通用设置导入步骤名称的综合参考列表 通用设置导入步骤的名称并不总是与其相应 xml 文件的名称匹配 例如 types xml 有一个名为 typeinfo 的导入步骤 如果没有列表 我会对一种简单的方法来查找导入步骤的名称感到满意 例
  • 用于在用户填写后隐藏 ploneformgen 表单的 Python 脚本。 (对于 Plone-4.3.2-64。)

    用户填写了 ploneformgen 表单后 我想使用自定义脚本适配器调用 python 脚本来更改用户的本地角色 以便他们不再看到该表单 换句话说 我想防止用户两次填写 或查看 表单 我认为执行此操作的一种方法是调用位于表单文件夹中的脚本
  • 使用 Collective.dexteritytextindexer 扩展 SearchableText

    我正在尝试扩展我的内容类型的 SearchableText 索引 我通过在模型文件中将多个字段标记为 indexer searchable true 成功地包含了多个字段 但是我无法从我的类型的 py 扩展 SearchableText 如
  • Plone 4.1.4 安装失败:lxml 构建失败:libxml2:

    预期结果 Successful installtion of Plone 4 1 4 实际结果 Installation fails with libxml2 cmmi failed Stack Ubuntu Ubuntu 10 04 4
  • Plone-如何为注册表中字典类型的记录创建控制面板?

    我正在尝试在我的 Plone 站点上创建一个控制面板插件 用于编辑字典类型的注册表记录 我的目的是将 供应商类型 作为字典存储在注册表中 我的registry xml位于profiles default中
  • 如何在 Plone 中定义默认视图

    我已经有一个用于 Plone 站点 主页 的默认视图的页面模板 如何定义文件夹的默认视图 此默认视图应使用页面模板 尝试这个 导航到所需的文件夹 在网址末尾添加 manage propertiesForm in the resulting
  • Plone - 在页面中何处存储图像和文件附件的最佳实践?

    我们正在使用 Plone 4 1 3 构建一个 Intranet 网站 并想知道是否有 Plone 最佳实践来存储附加到页面的文件和图像 我们的内联网更像是一个协作站点 用户可以在其中发布新闻项目和其他文章 因此 用户将插入图像 使用 Ti
  • 灵活地移动现有领域/行为[重复]

    这个问题在这里已经有答案了 如何将现有字段 IDublinCore rights 移动到特定字段之后的另一个字段集中 无需编写我自己的行为 IDublinCore 的副本 Rights 字段应出现在 image caption 自己的内容类
  • 克隆代码更改在开发站点中不可见

    我对克隆很陌生 我在 eclipse 中有一个项目文件夹 我是从cvs项目导入的 我有 zope 作为服务器 我启动 zope bin instance restart 当我在文件夹中进行更改时 我无法在开发网站中看到更改 我似乎无法发现发
  • IE7 和 TinyMCE 与 Plone

    在 Windows 服务器上开箱即用的 Plone 4 1 4 4113 中 IE7 上会出现一些客户端问题 我知道 访问主站点 没问题 登录 IE 引发运行时错误 第 505 行 扩展标识符 字符串或数字 添加内容 IE 引发运行时错误
  • Plone 内网工作流程和组权限

    现在 当然 这可能是由于对 Plone 中的角色 权限模型的误解 因为它与我过去使用过的许多系统略有不同 但这就是情况和我陷入困境的地方 客户需要一个仅对登录用户开放的 Plone 站点 4 3 3 并且可以选择使所选内容对未登录用户可见

随机推荐