101 lines
3.4 KiB
Python
101 lines
3.4 KiB
Python
# use planning-excel to actualize MADD-Teamspace
|
|
# zisco 2024-06-28 09:57
|
|
|
|
from distutils.log import INFO
|
|
from queue import Full
|
|
from sqlite3 import Timestamp
|
|
from atlassian import Confluence
|
|
import logging
|
|
import requests
|
|
import json
|
|
from datetime import date, datetime
|
|
|
|
# Custom serializer function
|
|
def custom_serializer(obj):
|
|
if isinstance(obj, datetime):
|
|
#'2024-03-28T09:20:00.000+01:00'
|
|
#return obj.strftime('%Y-%m-%dT%H:%M:%S')
|
|
return obj.strftime('%Y-%m-%dT%H:%M:%S.000+01:00')
|
|
raise TypeError(f'Object of type {type(obj)} is not JSON serializable')
|
|
|
|
logging.basicConfig(filename='confluence blog timestamp change.log',
|
|
filemode='a',
|
|
format='%(asctime)s - %(levelname)s: %(message)s',
|
|
level=logging.WARNING,
|
|
encoding='utf-8')
|
|
logger = logging.getLogger('myLogger')
|
|
logger.setLevel(level=logging.INFO)
|
|
|
|
confluence_host = "https://confluence.wien.gv.at/"
|
|
confluence_pat = "MDI3ODU2NzkzMTAyOsPz47kjJvVdJa1bLpen3W5sB6S5"
|
|
|
|
s = requests.Session()
|
|
s.headers['Authorization'] = f"Bearer {confluence_pat}"
|
|
confluence = Confluence(url=confluence_host, session=s)
|
|
|
|
# Function to retrieve page content by page ID
|
|
def get_page_content(page_id):
|
|
blog_page = confluence.get_page_by_id(page_id, expand='body.storage')
|
|
space = confluence.get_page_by_id(page_id, expand='space')
|
|
return blog_page, space['space']
|
|
|
|
# Function to create a new page with specified creation date
|
|
def create_page_with_creation_date(space, title, body, creation_date):
|
|
#headers = {'Content-Type': 'application/json'}
|
|
data = {
|
|
"type": "page",
|
|
"title": title,
|
|
"body": {
|
|
"storage": {
|
|
"value": body,
|
|
"representation": "storage"
|
|
}
|
|
},
|
|
"metadata": {
|
|
"createdDate": creation_date
|
|
}
|
|
}
|
|
status = confluence.create_page(space=space, title=title, body=body, type='blogpost')
|
|
return status
|
|
|
|
# Function to delete a page by page ID
|
|
def delete_page(page_id):
|
|
response = confluence.remove_page(page_id=page_id)
|
|
return response.status_code == 204
|
|
|
|
"""
|
|
def change_blog_timestamp(page_id):
|
|
blog_page = confluence.get_page_by_id(page_id, expand=None, status=None, version=None)
|
|
#confluence.update_page(page_id=page_id, Timestamp=datetime.now())
|
|
|
|
data = {
|
|
"history": {
|
|
"createdDate": datetime.now()
|
|
}
|
|
}
|
|
json_data = json.dumps(data, default=custom_serializer)
|
|
|
|
|
|
confluence.update_page_property(page_id=page_id, data=json_data)
|
|
|
|
# Get old page contents
|
|
page_content = confluence.get_page_by_id(page_id=page_id, expand='body') # Old page contents
|
|
|
|
#Rename and move page, get updated content
|
|
#new_page_content = confluence.update_page(old_page_content['id'], title=new_title, body=old_page_content['body'], parent_id=parent_id, type="page", representation="storage")
|
|
confluence.update_page(page_id=page_id, title=page_title) #, body=page_content['body'])
|
|
logger.info(f"New page title '{page_title}'") """
|
|
|
|
# Example usage
|
|
page_id = 317036255 # Jenkins-Blog
|
|
new_creation_date = datetime.now()
|
|
page_content, space = get_page_content(page_id)
|
|
if page_content:
|
|
title = page_content["title"]
|
|
body = page_content["body"]
|
|
new_page_id = create_page_with_creation_date(space['key'], title, body, new_creation_date)
|
|
delete_page(page_id)
|
|
else:
|
|
print("Page not found.")
|
|
|
|
#change_blog_timestamp(page_id=page_id) |