Skip to content

Commit 8be34a3

Browse files
authored
operate_taskをラップする関数の引数にlast_updated_datetimeを追加した (#454)
* last updated_datetimeを追加 * poetry update * format * update * version up * コメント追加
1 parent 687a72b commit 8be34a3

File tree

4 files changed

+218
-174
lines changed

4 files changed

+218
-174
lines changed

annofabapi/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.56.0"
1+
__version__ = "0.57.0"

annofabapi/wrapper.py

Lines changed: 76 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1807,7 +1807,9 @@ def get_all_tasks(self, project_id: str, query_params: Optional[Dict[str, Any]]
18071807
"""
18081808
return self._get_all_objects(self.api.get_tasks, limit=200, project_id=project_id, query_params=query_params)
18091809

1810-
def change_task_status_to_working(self, project_id: str, task_id: str) -> Task:
1810+
def change_task_status_to_working(
1811+
self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None
1812+
) -> Task:
18111813
"""
18121814
タスクのステータスを「作業中」に変更します。
18131815
@@ -1818,20 +1820,25 @@ def change_task_status_to_working(self, project_id: str, task_id: str) -> Task:
18181820
Args:
18191821
project_id: プロジェクトID
18201822
task_id: タスクID
1823+
last_updated_datetime: `operate_task` APIのリクエストボディに渡すタスクの最終更新日時。Noneなら`get_task`APIを実行して、タスクの最終更新日時を取得します。
18211824
18221825
Returns:
18231826
変更後のタスク
18241827
"""
1825-
task, _ = self.api.get_task(project_id, task_id)
1828+
if last_updated_datetime is None:
1829+
task, _ = self.api.get_task(project_id, task_id)
1830+
last_updated_datetime = task["updated_datetime"]
18261831
request_body = {
18271832
"status": TaskStatus.WORKING.value,
18281833
"account_id": self.api.account_id,
1829-
"last_updated_datetime": task["updated_datetime"],
1834+
"last_updated_datetime": last_updated_datetime,
18301835
}
18311836
updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body)
18321837
return updated_task
18331838

1834-
def change_task_status_to_break(self, project_id: str, task_id: str) -> Task:
1839+
def change_task_status_to_break(
1840+
self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None
1841+
) -> Task:
18351842
"""
18361843
タスクのステータスを「休憩中」に変更します。
18371844
@@ -1842,20 +1849,26 @@ def change_task_status_to_break(self, project_id: str, task_id: str) -> Task:
18421849
Args:
18431850
project_id: プロジェクトID
18441851
task_id: タスクID
1852+
last_updated_datetime: `operate_task` APIのリクエストボディに渡すタスクの最終更新日時。Noneなら`get_task`APIを実行して、タスクの最終更新日時を取得します。
18451853
18461854
Returns:
18471855
変更後のタスク
18481856
"""
1849-
task, _ = self.api.get_task(project_id, task_id)
1857+
if last_updated_datetime is None:
1858+
task, _ = self.api.get_task(project_id, task_id)
1859+
last_updated_datetime = task["updated_datetime"]
1860+
18501861
request_body = {
18511862
"status": TaskStatus.BREAK.value,
18521863
"account_id": self.api.account_id,
1853-
"last_updated_datetime": task["updated_datetime"],
1864+
"last_updated_datetime": last_updated_datetime,
18541865
}
18551866
updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body)
18561867
return updated_task
18571868

1858-
def change_task_status_to_on_hold(self, project_id: str, task_id: str) -> Task:
1869+
def change_task_status_to_on_hold(
1870+
self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None
1871+
) -> Task:
18591872
"""
18601873
タスクのステータスを「保留」に変更します。
18611874
@@ -1866,20 +1879,24 @@ def change_task_status_to_on_hold(self, project_id: str, task_id: str) -> Task:
18661879
Args:
18671880
project_id: プロジェクトID
18681881
task_id: タスクID
1882+
last_updated_datetime: `operate_task` APIのリクエストボディに渡すタスクの最終更新日時。Noneなら`get_task`APIを実行して、タスクの最終更新日時を取得します。
18691883
18701884
Returns:
18711885
変更後のタスク
18721886
"""
1873-
task, _ = self.api.get_task(project_id, task_id)
1887+
if last_updated_datetime is None:
1888+
task, _ = self.api.get_task(project_id, task_id)
1889+
last_updated_datetime = task["updated_datetime"]
1890+
18741891
request_body = {
18751892
"status": TaskStatus.ON_HOLD.value,
18761893
"account_id": self.api.account_id,
1877-
"last_updated_datetime": task["updated_datetime"],
1894+
"last_updated_datetime": last_updated_datetime,
18781895
}
18791896
updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body)
18801897
return updated_task
18811898

1882-
def complete_task(self, project_id: str, task_id: str) -> Task:
1899+
def complete_task(self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None) -> Task:
18831900
"""
18841901
今のフェーズを完了させ、 次のフェーズに遷移させます。
18851902
教師付フェーズのときはタスクを提出します。
@@ -1893,20 +1910,26 @@ def complete_task(self, project_id: str, task_id: str) -> Task:
18931910
Args:
18941911
project_id: プロジェクトID
18951912
task_id: タスクID
1913+
last_updated_datetime: `operate_task` APIのリクエストボディに渡すタスクの最終更新日時。Noneなら`get_task`APIを実行して、タスクの最終更新日時を取得します。
18961914
18971915
Returns:
18981916
変更後のタスク
18991917
"""
1900-
task, _ = self.api.get_task(project_id, task_id)
1918+
if last_updated_datetime is None:
1919+
task, _ = self.api.get_task(project_id, task_id)
1920+
last_updated_datetime = task["updated_datetime"]
1921+
19011922
request_body = {
19021923
"status": TaskStatus.COMPLETE.value,
19031924
"account_id": self.api.account_id,
1904-
"last_updated_datetime": task["updated_datetime"],
1925+
"last_updated_datetime": last_updated_datetime,
19051926
}
19061927
updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body)
19071928
return updated_task
19081929

1909-
def cancel_submitted_task(self, project_id: str, task_id: str) -> Task:
1930+
def cancel_submitted_task(
1931+
self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None
1932+
) -> Task:
19101933
"""
19111934
タスクの提出を取り消します。
19121935
「提出されたタスク」とは以下の状態になっています。
@@ -1922,44 +1945,62 @@ def cancel_submitted_task(self, project_id: str, task_id: str) -> Task:
19221945
Args:
19231946
project_id: プロジェクトID
19241947
task_id: タスクID
1948+
last_updated_datetime: `operate_task` APIのリクエストボディに渡すタスクの最終更新日時。Noneなら`get_task`APIを実行して、タスクの最終更新日時を取得します。
19251949
19261950
Returns:
19271951
変更後のタスク
19281952
"""
1929-
task, _ = self.api.get_task(project_id, task_id)
1953+
if last_updated_datetime is None:
1954+
task, _ = self.api.get_task(project_id, task_id)
1955+
last_updated_datetime = task["updated_datetime"]
1956+
19301957
request_body = {
19311958
"status": TaskStatus.CANCELLED.value,
19321959
"account_id": self.api.account_id,
1933-
"last_updated_datetime": task["updated_datetime"],
1960+
"last_updated_datetime": last_updated_datetime,
19341961
}
19351962
updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body)
19361963
return updated_task
19371964

1938-
def cancel_completed_task(self, project_id: str, task_id: str, operator_account_id: Optional[str] = None) -> Task:
1965+
def cancel_completed_task(
1966+
self,
1967+
project_id: str,
1968+
task_id: str,
1969+
operator_account_id: Optional[str],
1970+
*,
1971+
last_updated_datetime: Optional[str] = None,
1972+
) -> Task:
19391973
"""
19401974
タスクの受入完了状態を取り消す。
19411975
19421976
Args:
19431977
project_id: プロジェクトID
19441978
task_id: タスクID
19451979
operator_account_id: 受入完了状態を取り消した後の担当者のaccount_id
1980+
last_updated_datetime: `operate_task` APIのリクエストボディに渡すタスクの最終更新日時。Noneなら`get_task`APIを実行して、タスクの最終更新日時を取得します。
19461981
19471982
Returns:
19481983
変更後のタスク
19491984
"""
1950-
1951-
task, _ = self.api.get_task(project_id, task_id)
1985+
if last_updated_datetime is None:
1986+
task, _ = self.api.get_task(project_id, task_id)
1987+
last_updated_datetime = task["updated_datetime"]
19521988

19531989
request_body = {
19541990
"status": TaskStatus.NOT_STARTED.value,
19551991
"account_id": operator_account_id,
1956-
"last_updated_datetime": task["updated_datetime"],
1992+
"last_updated_datetime": last_updated_datetime,
19571993
}
19581994
updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body)
19591995
return updated_task
19601996

19611997
def change_task_operator(
1962-
self, project_id: str, task_id: str, operator_account_id: Optional[str] = None
1998+
self,
1999+
project_id: str,
2000+
task_id: str,
2001+
operator_account_id: Optional[str],
2002+
*,
2003+
last_updated_datetime: Optional[str] = None,
19632004
) -> Dict[str, Any]:
19642005
"""
19652006
タスクの担当者を変更します。
@@ -1971,53 +2012,56 @@ def change_task_operator(
19712012
project_id: プロジェクトID
19722013
task_id: タスクID
19732014
operator_account_id: 新しい担当者のaccount_id。Noneの場合は、担当者を「未割り当て」にします。
2015+
last_updated_datetime: `operate_task` APIのリクエストボディに渡すタスクの最終更新日時。Noneなら`get_task`APIを実行して、タスクの最終更新日時を取得します。
19742016
19752017
Returns:
19762018
変更後のタスク
19772019
19782020
"""
1979-
task, _ = self.api.get_task(project_id, task_id)
2021+
if last_updated_datetime is None:
2022+
task, _ = self.api.get_task(project_id, task_id)
2023+
last_updated_datetime = task["updated_datetime"]
19802024

19812025
request_body = {
19822026
"status": TaskStatus.NOT_STARTED.value,
19832027
"account_id": operator_account_id,
1984-
"last_updated_datetime": task["updated_datetime"],
2028+
"last_updated_datetime": last_updated_datetime,
19852029
}
19862030
updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body)
19872031
return updated_task
19882032

1989-
def reject_task(self, project_id: str, task_id: str, force: bool = False) -> Dict[str, Any]:
2033+
def reject_task(
2034+
self, project_id: str, task_id: str, *, force: bool = False, last_updated_datetime: Optional[str] = None
2035+
) -> Dict[str, Any]:
19902036
"""
19912037
タスクを差し戻します。
1992-
* 通常の差し戻しの場合、タスクの担当者は未割り当てになります。
1993-
* 強制差し戻しの場合、タスクの担当者は直前の教師付フェーズの担当者になります。
19942038
19952039
Notes:
1996-
* 通常の差し戻しの場合
2040+
* 通常の差し戻しの場合(force=False)
19972041
* 現在タスクを担当しているユーザーのみ、この操作を行うことができます。
19982042
* 現在の状態が作業中(working)のタスクに対してのみ、この操作を行うことができます。
1999-
* 現在のフェーズが検査(inspection)、もしくは受入(acceptance)のタスクに対してのみ、この操作を行うことができます。
2000-
* 強制差し戻しの場合
2043+
* 強制差し戻しの場合(force=True)
20012044
* タスクの状態・フェーズを無視して、フェーズを教師付け(annotation)に、状態を未作業(not started)に変更します。
2002-
* タスクの担当者としては、直前の教師付け(annotation)フェーズの担当者を割り当てます。
20032045
* この差戻しは、抜取検査・抜取受入のスキップ判定に影響を及ぼしません。
20042046
20052047
Args:
20062048
project_id: プロジェクトID
20072049
task_id: タスクID
20082050
force: Trueなら強制差し戻し、Falseなら通常の差し戻しを実施する
2051+
last_updated_datetime: `operate_task` APIのリクエストボディに渡すタスクの最終更新日時。Noneなら`get_task`APIを実行して、タスクの最終更新日時を取得します。
20092052
20102053
Returns:
20112054
変更後のタスク
20122055
20132056
"""
2014-
2015-
task, _ = self.api.get_task(project_id, task_id)
2057+
if last_updated_datetime is None:
2058+
task, _ = self.api.get_task(project_id, task_id)
2059+
last_updated_datetime = task["updated_datetime"]
20162060

20172061
request_body = {
20182062
"status": TaskStatus.REJECTED.value,
20192063
"account_id": self.api.account_id,
2020-
"last_updated_datetime": task["updated_datetime"],
2064+
"last_updated_datetime": last_updated_datetime,
20212065
"force": force,
20222066
}
20232067
updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body)

0 commit comments

Comments
 (0)