Skip to content

Commit 8a9f135

Browse files
authored
Merge pull request #37 from cloudblue/fix_tempdir_windows
Fix tempfile errors on win
2 parents 9e697d1 + 88463d4 commit 8a9f135

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

connect/reports/renderers/base.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,27 @@
11
# Copyright © 2021 CloudBlue. All rights reserved.
2-
3-
from abc import ABCMeta, abstractmethod
4-
import zipfile
2+
import contextlib
3+
import json
54
import os
6-
from datetime import datetime
5+
import shutil
76
import tempfile
8-
import json
7+
import zipfile
8+
from abc import ABCMeta, abstractmethod
9+
from datetime import datetime
910

1011
import pytz
1112

1213

14+
@contextlib.contextmanager
15+
def temp_dir():
16+
name = tempfile.mkdtemp()
17+
yield name
18+
try:
19+
if os.path.isdir(name):
20+
shutil.rmtree(name)
21+
except Exception:
22+
pass
23+
24+
1325
class BaseRenderer(metaclass=ABCMeta):
1426
"""
1527
Base renderer class with minimum required functionality
@@ -73,7 +85,7 @@ def render(self, data, output_file, start_time=None):
7385
:type start_time: datetime
7486
"""
7587
start_time = start_time or datetime.now(tz=pytz.utc)
76-
with tempfile.TemporaryDirectory() as tmpdir:
88+
with temp_dir() as tmpdir:
7789
report_file = self.generate_report(data, f'{tmpdir}/report')
7890
summary_file = self.generate_summary(f'{tmpdir}/summary', start_time)
7991
pack_file = self.pack_files(report_file, summary_file, output_file)

connect/reports/renderers/pdf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# Copyright © 2021 CloudBlue. All rights reserved.
22

33
import os
4-
import tempfile
54
from datetime import datetime
65
from functools import partial
76

87
import pytz
98

109
from weasyprint import CSS, HTML, default_url_fetcher
1110

11+
from connect.reports.renderers.base import temp_dir
1212
from connect.reports.renderers.j2 import Jinja2Renderer
1313
from connect.reports.renderers.registry import register
1414

@@ -38,7 +38,7 @@ class PDFRenderer(Jinja2Renderer):
3838
"""
3939
def render(self, data, output_file, start_time=None):
4040
start_time = start_time or datetime.now(tz=pytz.utc)
41-
with tempfile.TemporaryDirectory() as tmpdir:
41+
with temp_dir() as tmpdir:
4242
self.cwd = tmpdir
4343
report_file = self.generate_report(data, f'{tmpdir}/report')
4444
summary_file = self.generate_summary(f'{tmpdir}/summary', start_time)

0 commit comments

Comments
 (0)