通过Python实现Confluence,上传文件

3z6pesqy  于 2023-03-31  发布在  Python
关注(0)|答案(1)|浏览(434)

我有一个表的汇合页面,我用Python代码更新它,有一个单元格,我需要把链接到文件。
首先,我在这个单元格中放置了带下划线的行,而没有使用

'<td>
    <div class="content-wrapper">
        <p>
            <ac:link>
                <ri:attachment ri:filename="File_name.docx">
                <ri:page ri:content-title="Title_name" />
                </ri:attachment>
            </ac:link>
        </p>
    </div>
</td>'.

其次,我上传文件到整个Confluence页面使用
conf.attach_file(location, name=None, content_type=None, page_id=00000000, title="Check", space=None, comment="None")
第三,我通过Confluence中的宏Attachment检查了文件是否被附加到页面上。然而,当我更新页面时,没有任何变化。所以那些下划线的灰色行仍然是灰色的,它们不会变成蓝色作为链接,尽管文件的名称肯定是相同的。
你能帮帮我吗?有什么问题吗?
谢谢大家!

kknvjkwl

kknvjkwl1#

所以我测试了你文章中的confluence xhtml代码,它肯定不能工作,我很困惑你想用这些代码做什么,你不需要ac:linketc.标签来查看你的附件。
像使用python一样将附件上传到confluence。然后你必须获得附件的URL:

all_attachments = confluence.get_attachments_from_content(page_id, start=0, limit=50, expand=None, filename=None, media_type=None)

这将打印出一个很大的JSON字符串。在那里的某个地方(对不起,我没有时间弄清楚索引)是链接。链接看起来像这样:其中(page id是页面的id),filename.txt是文件名

http://wiki:8090/download/attachments/page_id/filename.txt?version=1&amp;modificationDate=1679673853281&amp;api=v2

您将看到,如果更新页面上的附件,链接将更改为:

http://wiki:8090/download/attachments/page_id/filename.txt?version=2&modificationDate=1679674473211&api=v2

因此,如果使用version=1的旧链接,则会得到旧版本。
要解决此问题:您可以将URL更改为:

http://wiki:8090/download/attachments/page_id/filename.txt

自己创建URL可能更容易(根据我的经验,这没有问题):

url = f"http://wiki:8090/download/attachments/{page_id}/{filename}"

现在你已经有了链接,你可以将它附加到confluence中,我不确定你实际上在用这些文件做什么,所以这里有一个例子:

html_link = f'<a href={url}>Press here to go to file.txt</a>'

然后将代码放在confluence页面的某个地方,并使用bs4:

#Lets say you have a td with class "file_goes_here" already in your XHTML
cell = (soup.find("td", {"class": "file_goes_here"})
#html_link is the link we created earlier above
cell.replace_with(html_link)

然后使用新内容更新confluence页面:

confluence.update_page(page_id, title, body, parent_id=None, type='page', representation='storage', minor_edit=False, full_width=False)

相关问题