Skip to content

Commit ab2393d

Browse files
author
gkowalc
committed
refactoring get_space_export
1 parent bfa7eae commit ab2393d

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

atlassian/confluence.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2657,7 +2657,6 @@ def get_page_as_word(self, page_id):
26572657
url = "exportword?pageId={pageId}".format(pageId=page_id)
26582658
return self.get(url, headers=headers, not_json_response=True)
26592659

2660-
26612660
def export_space_pdf(self, url):
26622661
try:
26632662
running_task = True
@@ -2698,18 +2697,20 @@ def export_space_pdf(self, url):
26982697
except IndexError as e:
26992698
log.error(e)
27002699
return None
2700+
27012701
def get_space_export(self, space_key: str, export_type: str) -> str:
27022702
def get_atl_request(url):
27032703
# this is only applicable to html/csv/xml export
2704+
# getting atl_token used for XSRF protection
27042705
response = self.get(url, advanced_mode=True)
27052706
parsed_html = BeautifulSoup(response.text, "html.parser")
27062707
atl_token = parsed_html.find("input", {"name": "atl_token"}).get("value")
27072708
return atl_token
27082709
try:
27092710
running_task = True
27102711
headers = self.form_token_headers
2711-
print("Initiate PDF export from Confluence Cloud")
2712-
log.info("Initiate PDF export from Confluence Cloud")
2712+
print("Initiate " + str(export_type) + " export from Confluence space " + str(space_key))
2713+
log.info("Initiate " + str(export_type) + " export from Confluence space " + str(space_key))
27132714
form_data = {}
27142715
url = ''
27152716
if export_type == "csv":
@@ -2736,7 +2737,6 @@ def get_atl_request(url):
27362737
"includeComments": "true",
27372738
"confirm": "Export" }
27382739
elif export_type == "pdf":
2739-
27402740
form_data = {
27412741
# "atl_token": get_atl_request(f"spaces/flyingpdf/flyingpdf.action?key={space_key}"),
27422742
"synchronous": "false",
@@ -2748,26 +2748,25 @@ def get_atl_request(url):
27482748
url = f"/spaces/exportspace.action?key={space_key}"
27492749
# bypass self.confluence_client.post method because it serializes form data as JSON which is wrong
27502750
if export_type == "pdf":
2751-
27522751
url = self.url_joiner(url=self.url,
27532752
path=f"spaces/flyingpdf/doflyingpdf.action?key={space_key}")
27542753
elif export_type == "csv" or export_type == "html" or export_type == "xml":
27552754
url = self.url_joiner(url=self.url, path=f"spaces/doexportspace.action?key={space_key}")
2755+
2756+
# Sending a request that trigger the export
27562757
response = self.session.post(url, headers=self.form_token_headers,
27572758
data=form_data)
2758-
27592759
parsed_html = BeautifulSoup(response.text, "html.parser")
2760-
print(parsed_html)
2760+
# Getting the poll URL to get the export progress status
27612761
poll_url = parsed_html.find("meta", {"name": "ajs-pollURI"}).get("content")
2762-
running_task = True
27632762
while running_task:
27642763
progress_response = self.get(poll_url)
27652764
if progress_response['complete']:
27662765
parsed_html = BeautifulSoup(progress_response['message'], "html.parser")
27672766
download_url = parsed_html.find("a", {"class": "space-export-download-path"}).get("href")
27682767
return self.url.replace('/wiki', '') + download_url
2769-
time.sleep(5)
2770-
return None
2768+
time.sleep(15)
2769+
return
27712770
except Exception as e:
27722771
print(e)
27732772
return None

0 commit comments

Comments
 (0)