Обновление / удаление страницы слияния с использованием кода 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
Как примечание, так как вы выглядите как новый пользователь, здесь мы не будем предоставлять фрагмент кода, и вам нужно рассказать нам, что вы пробовали и в чем ваша проблема на самом деле. Я бы порекомендовал вам взглянуть на Как мне задать хороший вопрос:-)