您如何确定PloneFormGen中可用的属性和方法

时间:2019-03-15 14:33:06

标签: python plone ploneformgen

如何确定PloneFormGen中对象的方法和属性?我想为自定义字段适配器编写一些脚本,并想知道可用的脚本。我的直接问题来自我从以下网站复制的一些在线代码: Python script to hide ploneformgen form after user has filled it out. (For Plone-4.3.2-64.)

alreadyInDB = False
savedData = ploneformgen.savefield.getSavedFormInputForEdit()
username = request.AUTHENTICATED_USER.getId()
return {'username': 'No way man!'}
usersInDB = [x.split(',')[1] for x in savedData.split('\r\n') if len(x)>0]

if username in usersInDB:
    alreadyInDB = True

if alreadyInDB:
    return {'username': 'No way man!'}

这是我收到的错误消息。

AttributeError:保存字段

我想做的是查看可用于属性和方法的内容,并修复此问题或编写自己的内容。任何帮助表示赞赏。

这是我们使用的: PloneFormGen 1.7.12 Products.PFGExtendedMailAdapter 2.4

克隆4.3.3(4308) CMF 2.2.7 Zope 2.13.22 Python 2.7.5(默认,2018年10月30日,23:45:53)[GCC 4.8.5 20150623(Red Hat 4.8.5-36)] PIL 2.0.0(枕头)

3 个答案:

答案 0 :(得分:0)

在对象上调用dir(),以返回其具有的所有可用方法和属性的列表。

或者,在函数,类,类方法或类属性上使用inspect.getsource()来返回与其关联的源代码。

使用pandas DataFrame对象的示例:

>>> from inspect import getsource
>>> import pandas as pd
>>> df = pd.DataFrame()
>>> dir(df)
    # returns methods and attributes of df
    # which is an instance of a DataFrame object
>>> getsource(pd.DataFrame.head)
    # returns source code for head attribute
    # of a DataFrame object

请注意,getsource需要访问实际类(在这种情况下为pd.DataFrame)的属性/方法,而不是该类的实例(在本示例中为df)。因此,您可以先使用dir来确定方法/属性,然后在特定方法/属性上使用getsource来查看代码。

答案 1 :(得分:0)

PloneFormGen对TTW脚本使用受限的Python。 您可以在对象上使用dir()或vars()来查找它们提供的内容。 要看到这一点,您可能需要打印它们。

TTW脚本自省性不强。 也许可以看一下相关代码,或者使用调试模式来获取Form并使用上面的相同方法使用真正的调试器来查看发生了什么。

./ bin /实例调试 然后,您将数据库的根对象作为“ app”。

获取表单可以如下所示:

var information_paragraph = document.getElementById(myDivElement);
var infoText = "Hello World!";
information_paragraph.innerHTML = infoText;

获取所有表单字段对象(子级):

myform = app.unrestrictedTraverse('Plone/my-form')

获取特定字段(包括dada保存适配器对象):

myform.objectItems()

祝你好运;)

答案 2 :(得分:0)

在代码示例中,ploneformgen是可用的上下文变量,代表表单文件夹对象,savefield代表驻留在表单文件夹中的保存数据适配器的ID。

您需要添加一个名为savefield的保存数据适配器,或者如果已经存在,则相应地更改脚本中的ID。