From f1e06e78a9a72da8a0756f341bfbfd9a03ba0b42 Mon Sep 17 00:00:00 2001 From: Ivan Ivanov Date: Thu, 17 Jul 2025 02:18:20 +0300 Subject: [PATCH 1/2] feat: add show_project method Show data of an individual project. --- qfieldcloud_sdk/cli.py | 19 +++++++++++++++++++ qfieldcloud_sdk/sdk.py | 21 +++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/qfieldcloud_sdk/cli.py b/qfieldcloud_sdk/cli.py index 448506b..acbcf4d 100755 --- a/qfieldcloud_sdk/cli.py +++ b/qfieldcloud_sdk/cli.py @@ -225,6 +225,25 @@ def list_projects(ctx: Context, include_public: bool, **opts) -> None: log("User does not have any projects yet.") +@cli.command() +@click.argument("project_id") +@click.pass_context +def show_project(ctx: Context, project_id: str) -> None: + """Show QFieldCloud project data.""" + + project: Dict[str, Any] = ctx.obj["client"].show_project(project_id) + + if ctx.obj["format_json"]: + print_json(project) + else: + log("Listing projects…") + if project: + log("Project data:") + log(format_project_table([project])) + else: + log("User does not have access to projects yet.") + + @cli.command() @click.argument("project_id") @click.option( diff --git a/qfieldcloud_sdk/sdk.py b/qfieldcloud_sdk/sdk.py index 8b9d409..7e03413 100644 --- a/qfieldcloud_sdk/sdk.py +++ b/qfieldcloud_sdk/sdk.py @@ -377,6 +377,27 @@ def list_projects( ) return cast(List, payload) + def show_project( + self, + project_id: str, + ) -> Dict[str, Any]: + """Show project data. + + Args: + project_id: the project data to list data for + + Returns: + A dictionary containing project details. + + Example: + ```python + client.show_project() + ``` + """ + payload = self._request_json("GET", f"projects/{project_id}") + + return cast(Dict, payload) + def list_remote_files( self, project_id: str, skip_metadata: bool = True ) -> List[Dict[str, Any]]: From 3558c77f276311bef34f65c01147f598922f9dfb Mon Sep 17 00:00:00 2001 From: Ivan Ivanov Date: Fri, 18 Jul 2025 13:12:27 +0300 Subject: [PATCH 2/2] Address review --- qfieldcloud_sdk/cli.py | 7 +++---- qfieldcloud_sdk/sdk.py | 8 ++++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/qfieldcloud_sdk/cli.py b/qfieldcloud_sdk/cli.py index acbcf4d..7c0fcd4 100755 --- a/qfieldcloud_sdk/cli.py +++ b/qfieldcloud_sdk/cli.py @@ -228,15 +228,14 @@ def list_projects(ctx: Context, include_public: bool, **opts) -> None: @cli.command() @click.argument("project_id") @click.pass_context -def show_project(ctx: Context, project_id: str) -> None: - """Show QFieldCloud project data.""" +def get_project(ctx: Context, project_id: str) -> None: + """Get QFieldCloud project data.""" - project: Dict[str, Any] = ctx.obj["client"].show_project(project_id) + project: Dict[str, Any] = ctx.obj["client"].get_project(project_id) if ctx.obj["format_json"]: print_json(project) else: - log("Listing projects…") if project: log("Project data:") log(format_project_table([project])) diff --git a/qfieldcloud_sdk/sdk.py b/qfieldcloud_sdk/sdk.py index 7e03413..a975809 100644 --- a/qfieldcloud_sdk/sdk.py +++ b/qfieldcloud_sdk/sdk.py @@ -377,21 +377,21 @@ def list_projects( ) return cast(List, payload) - def show_project( + def get_project( self, project_id: str, ) -> Dict[str, Any]: - """Show project data. + """Get project data. Args: - project_id: the project data to list data for + project_id: the project data to get data for. Returns: A dictionary containing project details. Example: ```python - client.show_project() + client.get_project(project_id) ``` """ payload = self._request_json("GET", f"projects/{project_id}")