Can';t在Plone 4.3.1中以编程方式创建灵巧内容类型

Can';t在Plone 4.3.1中以编程方式创建灵巧内容类型,plone,zope,dexterity,Plone,Zope,Dexterity,我使用站点设置中的敏捷管理器创建了一个新的内容类型。我能够通过Plone用户界面成功地添加内容,但现在我需要用python脚本创建相同的对象 我的第一次尝试是使用invokeFactory: context.invokeFactory("mycontenttype", id="test", Title="Test") 同样的代码适用于“文件夹”对象,但在我的灵巧类型中失败: Traceback (innermost last): Module ZPublisher.Publish, lin

我使用站点设置中的敏捷管理器创建了一个新的内容类型。我能够通过Plone用户界面成功地添加内容,但现在我需要用python脚本创建相同的对象

我的第一次尝试是使用invokeFactory:

context.invokeFactory("mycontenttype", id="test", Title="Test")
同样的代码适用于“文件夹”对象,但在我的灵巧类型中失败:

Traceback (innermost last):
  Module ZPublisher.Publish, line 60, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 46, in call_object
  Module Shared.DC.Scripts.Bindings, line 322, in __call__
  Module Products.PloneHotfix20130618.spamProtect, line 35, in _patched_bindAndExec
  Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
  Module Products.PythonScripts.PythonScript, line 344, in _exec
  Module script, line 7, in test
   - <PythonScript at /three-year-plan/test>
   - Line 7
TypeError: invokeFactory() takes at least 3 arguments (2 given)
任何试图从python脚本中的plone.dexterity.utils导入的操作都会导致权限错误:

Traceback (innermost last):

  Module ZPublisher.Publish, line 60, in publish
  Module ZPublisher.mapply, line 77, in mapply
  zModule ZPublisher.Publish, line 46, in call_object
  Module Shared.DC.Scripts.Bindings, line 322, in __call__
  Module Products.PloneHotfix20130618.spamProtect, line 35, in _patched_bindAndExec
  Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
  Module Products.PythonScripts.PythonScript, line 344, in _exec
  Module script, line 1, in test
    - <PythonScript at /my-site/test>
    - Line 1
  Module AccessControl.ZopeGuards, line 305, in guarded_import
  Unauthorized: import of 'plone.dexterity.utils' is unauthorized

您的猜测是正确的:您必须使用createContentInContainer。 但是不能在Python脚本中使用它,因为只允许使用所谓的受限Python[1]。把它放在一个视图中[2]

作为参考,请查看:

  • 为此,您应该能够使用“invokeFactory”。在容器上调用它,并将类型名作为字符串传递给它


    我不确定您使用invokeFactory方法的尝试哪里出了问题,但它确实有效。有关详细信息,请参阅。

    我们应该考虑是否应将灵巧方便功能标记为脚本安全。在dev.plone.org上提交功能请求通知单。如果你想自己试试,我可以帮你。
    Traceback (innermost last):
    
      Module ZPublisher.Publish, line 60, in publish
      Module ZPublisher.mapply, line 77, in mapply
      zModule ZPublisher.Publish, line 46, in call_object
      Module Shared.DC.Scripts.Bindings, line 322, in __call__
      Module Products.PloneHotfix20130618.spamProtect, line 35, in _patched_bindAndExec
      Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
      Module Products.PythonScripts.PythonScript, line 344, in _exec
      Module script, line 1, in test
        - <PythonScript at /my-site/test>
        - Line 1
      Module AccessControl.ZopeGuards, line 305, in guarded_import
      Unauthorized: import of 'plone.dexterity.utils' is unauthorized
    
    Plone 4.3.1 (4306)
    CMF 2.2.7
    Zope 2.13.19
    Python 2.7.3 (default, Aug 1 2012, 05:14:39) [GCC 4.6.3]
    PIL 1.7.8 (Pillow)
    Dexterity Content Types 2.0.8