@@ -2657,7 +2657,6 @@ def get_page_as_word(self, page_id):
2657
2657
url = "exportword?pageId={pageId}" .format (pageId = page_id )
2658
2658
return self .get (url , headers = headers , not_json_response = True )
2659
2659
2660
-
2661
2660
def export_space_pdf (self , url ):
2662
2661
try :
2663
2662
running_task = True
@@ -2698,18 +2697,20 @@ def export_space_pdf(self, url):
2698
2697
except IndexError as e :
2699
2698
log .error (e )
2700
2699
return None
2700
+
2701
2701
def get_space_export (self , space_key : str , export_type : str ) -> str :
2702
2702
def get_atl_request (url ):
2703
2703
# this is only applicable to html/csv/xml export
2704
+ # getting atl_token used for XSRF protection
2704
2705
response = self .get (url , advanced_mode = True )
2705
2706
parsed_html = BeautifulSoup (response .text , "html.parser" )
2706
2707
atl_token = parsed_html .find ("input" , {"name" : "atl_token" }).get ("value" )
2707
2708
return atl_token
2708
2709
try :
2709
2710
running_task = True
2710
2711
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 ) )
2713
2714
form_data = {}
2714
2715
url = ''
2715
2716
if export_type == "csv" :
@@ -2736,7 +2737,6 @@ def get_atl_request(url):
2736
2737
"includeComments" : "true" ,
2737
2738
"confirm" : "Export" }
2738
2739
elif export_type == "pdf" :
2739
-
2740
2740
form_data = {
2741
2741
# "atl_token": get_atl_request(f"spaces/flyingpdf/flyingpdf.action?key={space_key}"),
2742
2742
"synchronous" : "false" ,
@@ -2748,26 +2748,25 @@ def get_atl_request(url):
2748
2748
url = f"/spaces/exportspace.action?key={ space_key } "
2749
2749
# bypass self.confluence_client.post method because it serializes form data as JSON which is wrong
2750
2750
if export_type == "pdf" :
2751
-
2752
2751
url = self .url_joiner (url = self .url ,
2753
2752
path = f"spaces/flyingpdf/doflyingpdf.action?key={ space_key } " )
2754
2753
elif export_type == "csv" or export_type == "html" or export_type == "xml" :
2755
2754
url = self .url_joiner (url = self .url , path = f"spaces/doexportspace.action?key={ space_key } " )
2755
+
2756
+ # Sending a request that trigger the export
2756
2757
response = self .session .post (url , headers = self .form_token_headers ,
2757
2758
data = form_data )
2758
-
2759
2759
parsed_html = BeautifulSoup (response .text , "html.parser" )
2760
- print ( parsed_html )
2760
+ # Getting the poll URL to get the export progress status
2761
2761
poll_url = parsed_html .find ("meta" , {"name" : "ajs-pollURI" }).get ("content" )
2762
- running_task = True
2763
2762
while running_task :
2764
2763
progress_response = self .get (poll_url )
2765
2764
if progress_response ['complete' ]:
2766
2765
parsed_html = BeautifulSoup (progress_response ['message' ], "html.parser" )
2767
2766
download_url = parsed_html .find ("a" , {"class" : "space-export-download-path" }).get ("href" )
2768
2767
return self .url .replace ('/wiki' , '' ) + download_url
2769
- time .sleep (5 )
2770
- return None
2768
+ time .sleep (15 )
2769
+ return
2771
2770
except Exception as e :
2772
2771
print (e )
2773
2772
return None
0 commit comments