Skip to content

Commit

Permalink
refactor(client): prohibit closing current draft in "close_draft"
Browse files Browse the repository at this point in the history
  • Loading branch information
rexzheng324-c committed Aug 23, 2021
1 parent 3d03963 commit c058485
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
4 changes: 2 additions & 2 deletions tensorbay/cli/draft.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,8 @@ def _edit_draft(


def _close_draft(dataset_client: DatasetClientType, info: TBRN) -> None:
if not info.is_draft:
if not info.draft_number:
error("Draft number is required when editing draft")

dataset_client.close_draft()
dataset_client._close_draft(info.draft_number) # pylint: disable=protected-access
click.echo(f"{info.get_tbrn()} is closed.")
23 changes: 13 additions & 10 deletions tensorbay/client/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ def _generate_drafts(self, offset: int = 0, limit: int = 128) -> Generator[Draft

return response["totalCount"] # type: ignore[no-any-return]

def _close_draft(self, number: int) -> None:
patch_data = {"status": "CLOSED"}
self._client.open_api_do("PATCH", f"drafts/{number}", self._dataset_id, json=patch_data)

def _generate_commits(
self, revision: str, offset: int = 0, limit: int = 128
) -> Generator[Commit, None, int]:
Expand Down Expand Up @@ -307,21 +311,20 @@ def update_draft(
"PATCH", f"drafts/{draft_number}", self._dataset_id, json=patch_data
)

def close_draft(self, draft_number: Optional[int] = None) -> None:
def close_draft(self, number: int) -> None:
"""Close the draft.
Arguments:
draft_number: The closed draft number.
If is not given, close the current draft.
number: The draft number.
Raises:
OperationError: When closing the current draft.
"""
if draft_number is None:
self._status.check_authority_for_draft()
draft_number = self.status.draft_number
if number == self.status.draft_number:
raise OperationError("Closing the current draft is not allowed")

patch_data = {"status": "CLOSED"}
self._client.open_api_do(
"PATCH", f"drafts/{draft_number}", self._dataset_id, json=patch_data
)
self._close_draft(number)

def get_commit(self, revision: Optional[str] = None) -> Commit:
"""Get the certain commit with the given revision.
Expand Down

0 comments on commit c058485

Please sign in to comment.