Обновление / удаление страницы слияния с использованием кода Python

Я хочу обновить страницу слияния через остальные API. Я никогда не работал над этим раньше. Пожалуйста, предложите фрагмент кода, где я могу обновить страницу через "имя страницы". скажем, мой сайт слияния - https:\wiki.mydomain.com, имя страницы - "TEST", пробел - "TST"

4 ответа

Вы также можете использовать модуль Слияние в API Atlassian Python для обновления / удаления впадения страниц из Python. По сути, это оболочка для REST API, обеспечивающая простой интерфейс.

Установка через pip:

      pip install atlassian-python-api

Использование:

      from atlassian import Confluence

conf_site = 'https://wiki.mydomain.com'
conf_user = 'username'
conf_pass = 'password'

page_title = 'TEST' 
page_space = 'TST'

# connect to Confluence 
conf = Confluence(url=conf_site, username=conf_user, password=conf_pass)

# resolve page ID
page_id = conf.get_page_id(page_space, page_title)

# optonal: get current page content, in case you want to base your editing on that
page = conf.get_page_by_id(page_id, expand='body.storage')
page_content = page['body']['storage']['value']

# new page content
page_content =  '<p>This is the new updated text of the page</p>'

# update page with new content
conf.update_page(page_id, page_title, page_content)

Или удалить:

      # This method removes a page, if it has recursive flag, method removes including child pages
conf.remove_page(page_id, status=None, recursive=False)

Обновление существующей страницы Wiki на Confluence с помощью Python 3. См. Этот ответ, чтобы узнать, как создать страницу с помощью Python.

Убедитесь, что ID правильный для страницы, которую вы пытаетесь обновить. И если вы собираетесь изменить заголовок, убедитесь, что тот же заголовок не отображается на другой странице в том же пространстве.

import requests
import json
from requests.auth import HTTPBasicAuth

# set auth token and get the basic auth code
auth_token = "{TOKEN}"
basic_auth = HTTPBasicAuth('{email you use to log in}', auth_token)

# Set the title and content of the page to create
page_title = 'My Existing Page'
page_html = '<p>This is the text that needs to be updated</p>'

page_id = {Page ID}
space_key = '{SPACE KEY}'

# get the confluence home page url for your organization {confluence_home_page}
url = '{confluence_home_page}/rest/api/content/{Page ID}'

# Request Headers
headers = {
    'Content-Type': 'application/json;charset=iso-8859-1',
}

# Request body
data = {
    'id': {Page ID}
    'type': 'page',
    'title': page_title,
    'space': {'key':space_key},
    'body': {
        'storage':{
            'value': page_html,
            'representation':'storage',
        }
    },
    'version': {
        'number': 2,
        'when': '2017-10-06T15:16:17.501-04:00'}
}
# the version number should be the immediate next version number of the existing document.

# We're ready to call the api
try:

    r = requests.put(url=url, data=json.dumps(data), headers=headers, auth=basic_auth)

    # Consider any status other than 2xx an error
    if not r.status_code // 100 == 2:
        print("Error: Unexpected response {}".format(r))
    else:
        print('Page Updated!')

except requests.exceptions.RequestException as e:

    # A serious problem happened, like an SSLError or InvalidURL
    print("Error: {}".format(e))

Ниже приведен код Python для удаления страницы слияния с использованием заголовка страницы.

checkPageExistsData = requests.get("https:\wiki.mydomain.com/rest/api/content?title=TEST&expand=history", headers={'Content-Type':'application/json'}, auth=('yourConfluenceUser', 'yourConfluecePassword'))
    requestJson = checkPageExistsData.json()
    pageId = ''
    if requestJson["results"] != None:
        for results in requestJson["results"]:
            pageId = (results["id"])
                    requests.delete("https:\wiki.mydomain.com/rest/api/content/"+pageId+"", headers={'Content-Type':'application/json'}, auth=('yourConfluenceUser', 'yourConfluecePassword'))
        print('Page deleted')
    else:
        print('Page does not exist')

Как вы можете видеть в документации Atlassian ( здесь), вы можете обновить страницы с помощью следующих curl:

curl -u admin:admin -X PUT -H 'Content-Type: application/json' -d'{"id":"3604482","type":"page",
"title":"new page","space":{"key":"TST"},"body":{"storage":{"value":
"<p>This is the updated text for the new page</p>","representation":"storage"}},
"version":{"number":2}}' http://localhost:8080/confluence/rest/api/content/3604482 | python -mjson.tool

Однако он работает с идентификатором страницы, а не с заголовком страницы. Вы можете получить идентификатор с помощью следующего:

curl -u admin:admin -X GET "http://localhost:8080/confluence/rest/api/content?title=myPage%20Title
&spaceKey=TST&expand=history" | python -mjson.tool

Как примечание, так как вы выглядите как новый пользователь, здесь мы не будем предоставлять фрагмент кода, и вам нужно рассказать нам, что вы пробовали и в чем ваша проблема на самом деле. Я бы порекомендовал вам взглянуть на Как мне задать хороший вопрос:-)

Другие вопросы по тегам