Skip to content

Commit 625632a

Browse files
varmar05wonder-sk
authored andcommitted
Simplify report API call, pass output file instead output dir
1 parent 0c0d0f3 commit 625632a

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

mergin/report.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -167,18 +167,18 @@ def report(self):
167167
return records
168168

169169

170-
def create_report(mc, directory, project, since, to, out_dir=tempfile.gettempdir()):
170+
def create_report(mc, directory, since, to, out_file):
171171
""" Creates report from geodiff changesets for a range of project versions in CSV format.
172172
173173
Args:
174174
mc (MerginClient): MerginClient instance.
175175
directory (str): local project directory (must already exist).
176-
project (str): full project name (<namespace/project>).
177176
since (str): starting project version tag, for example 'v3'.
178177
to (str): ending project version tag, for example 'v6'.
179-
out_dir (str): output directory to save report.csv in, defaults to temp dir
178+
out_file (str): output file to save csv in
180179
"""
181180
mp = MerginProject(directory)
181+
project = mp.metadata["name"]
182182
mp.log.info(f"--- Creating changesets report for {project} from {since} to {to} versions ----")
183183
versions_map = {v["name"]: v for v in mc.project_versions(project, since, to)}
184184
headers = ["file", "table", "author", "date", "time", "version", "operation", "length", "area", "count"]
@@ -245,10 +245,10 @@ def create_report(mc, directory, project, since, to, out_dir=tempfile.gettempdir
245245
raise ClientError("Reporting failed, please check log for details")
246246

247247
# export report to csv file
248-
proj_name = project.replace(os.path.sep, "-")
249-
report_file = os.path.join(out_dir, f'report-{proj_name}-{since}-{to}.csv')
250-
with open(report_file, 'w', newline='') as f_csv:
248+
out_dir = os.path.dirname(out_file)
249+
os.makedirs(out_dir, exist_ok=True)
250+
with open(out_file, 'w', newline='') as f_csv:
251251
writer = csv.DictWriter(f_csv, fieldnames=headers)
252252
writer.writeheader()
253253
writer.writerows(records)
254-
mp.log.info(f"--- Report saved to {report_file} ----")
254+
mp.log.info(f"--- Report saved to {out_file} ----")

mergin/test/test_client.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import pytz
1010
import sqlite3
1111

12+
from .. import InvalidProject
1213
from ..client import MerginClient, ClientError, MerginProject, LoginError, decode_token_data, TokenError
1314
from ..client_push import push_project_async, push_project_cancel
1415
from ..utils import (
@@ -1630,9 +1631,11 @@ def test_report(mc):
16301631
directory = mp.dir
16311632
since = "v2"
16321633
to = "v4"
1633-
create_report(mc, directory, project, since, to, TMP_DIR)
16341634
proj_name = project.replace(os.path.sep, "-")
1635-
report_file = os.path.join(TMP_DIR, f'report-{proj_name}-{since}-{to}.csv')
1635+
report_file = os.path.join(TMP_DIR, "report", f'{proj_name}-{since}-{to}.csv')
1636+
if os.path.exists(report_file):
1637+
os.remove(report_file)
1638+
create_report(mc, directory, since, to, report_file)
16361639
assert os.path.exists(report_file)
16371640
# assert headers and content in report file
16381641
with open(report_file, "r") as rf:
@@ -1643,3 +1646,8 @@ def test_report(mc):
16431646
assert "v3,update,,,2" in content
16441647
# files not edited are not in reports
16451648
assert "inserted_1_A.gpkg" not in content
1649+
1650+
# rm local mergin project and try again
1651+
shutil.rmtree(directory)
1652+
with pytest.raises(InvalidProject):
1653+
create_report(mc, directory, since, to, report_file)

0 commit comments

Comments
 (0)