当我使用plone.api content.create进行查找结果时,空的

时间:2017-01-26 13:55:57

标签: python plone plone-4.x

我使用plone.api创建一个脚本,将一批PDF上传到一个文件夹中,我将把每个PDF文件放在哪个文件夹来自csv。我的问题是......

如果for中的下一个值interrtion带来同一年,那么在for的最后一次交互中创建的变量{var yearBrain的输出再次为空。当脚本完成后,在plone中我会有很多文件夹标题2015和ids 20152015-1 ......

for i in csv:
    yearBrain = api.content.find(context=container, SearchableText=str(i[1]))
    if solidData(yearBrain):
        #solidData returns if exist infor and year have 4 digits
        print 'if true, insert a PDF into a folder'
    else:
        #If solidData false, yearBrain results empty, so create a folder
        container = api.content.create(type='Folder', title=unicode(str(i[1]), 'utf-8'), container=container)
        transaction.commit()

我认为api.content.find无法找到最近创建的文件夹。

我是如何解决这个问题的?

[更新 - 工作]

        if pdf_tipodoc:
            if pdf_tipodoc == 'PROCESSO':
                valor = splitProcesso(pdf_nprocesso)
                # valor returns a list with two elements like ['234', '2016']
                container = portal[plone_site_pasta][processos]
                # Container is: <ATFolder at /intranet/ged/processos>
                print container.objectIds() #look what have inside!
                if valor[1] in container.objectIds():
                    print 'Folder already created! Commit PDF inside'
                else:
                    container = api.content.create(type='Folder', title=valor[1], container=container)
                    transaction.commit()

1 个答案:

答案 0 :(得分:2)

请勿使用api.content.find:您不需要搜索在文件夹中查找知道ID的项目。

如果i[1]是您当前的年份(我猜),请尝试以下内容:

if str(i[1]) in container.objectIds():
    # year folder already exists