Skip to content

Commit 0f7400a

Browse files
authored
Merge pull request #54 from kurusugawa-computer/fix/my-dataclass
wrapper.pyに `get_all_my_organizations` を追加
2 parents fbe8a36 + 202638b commit 0f7400a

File tree

12 files changed

+444
-262
lines changed

12 files changed

+444
-262
lines changed

annofabapi/__version__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.15.1'
1+
__version__ = '0.15.2'

annofabapi/api.py

+3-12
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,7 @@ def refresh_token(self) -> Optional[Tuple[Dict[str, Any], requests.Response]]:
269269
# Public Method : 労務関係API (将来的に大きく変更される可能性があります)
270270
# 労務管理がりようできる組織は限られています。利用する場合は、AnnoFabにお問い合わせください。
271271
#########################################
272-
def get_labor_control(
273-
self,
274-
query_params: Optional[Dict[str, Any]] = None
275-
) -> Tuple[Any, requests.Response]:
272+
def get_labor_control(self, query_params: Optional[Dict[str, Any]] = None) -> Tuple[Any, requests.Response]:
276273
"""労務管理関連データを一括で取得します。
277274
278275
@@ -291,10 +288,7 @@ def get_labor_control(
291288
}
292289
return self._request_wrapper(http_method, url_path, **keyword_params)
293290

294-
def put_labor_control(
295-
self,
296-
request_body: Dict[str, Any]
297-
) -> Tuple[Any, requests.Response]:
291+
def put_labor_control(self, request_body: Dict[str, Any]) -> Tuple[Any, requests.Response]:
298292
"""労務管理関連データを更新します。
299293
300294
@@ -313,10 +307,7 @@ def put_labor_control(
313307
}
314308
return self._request_wrapper(http_method, url_path, **keyword_params)
315309

316-
def delete_labor_control(
317-
self,
318-
data_id: str
319-
) -> Tuple[Any, requests.Response]:
310+
def delete_labor_control(self, data_id: str) -> Tuple[Any, requests.Response]:
320311
"""労務管理関連データを削除します。
321312
322313

annofabapi/dataclass/my.py

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# flake8: noqa: W291
2+
# pylint: disable=too-many-lines,trailing-whitespace
3+
"""
4+
annofabapiのmodelをDataClassで定義したクラス
5+
6+
Note:
7+
このファイルはopenapi-generatorで自動生成される。詳細は generate/README.mdを参照.
8+
oneOf, allOfなどは正しく表現できない可能性がある。
9+
"""
10+
11+
import warnings # pylint: disable=unused-import
12+
from dataclasses import dataclass
13+
from typing import Any, Dict, List, NewType, Optional, Tuple, Union # pylint: disable=unused-import
14+
15+
from dataclasses_json import dataclass_json
16+
17+
from annofabapi.dataclass.organization import OrganizationSummary
18+
from annofabapi.models import AccountAuthority, OrganizationMemberRole, OrganizationMemberStatus, PricePlan
19+
20+
21+
@dataclass_json
22+
@dataclass
23+
class MyOrganization:
24+
"""
25+
26+
"""
27+
organization_id: Optional[str]
28+
""""""
29+
30+
name: Optional[str]
31+
""""""
32+
33+
email: Optional[str]
34+
""""""
35+
36+
price_plan: Optional[PricePlan]
37+
""""""
38+
39+
summary: Optional[OrganizationSummary]
40+
""""""
41+
42+
created_datetime: Optional[str]
43+
""""""
44+
45+
updated_datetime: Optional[str]
46+
""""""
47+
48+
my_role: Optional[OrganizationMemberRole]
49+
""""""
50+
51+
my_status: Optional[OrganizationMemberStatus]
52+
""""""
53+
@dataclass_json
54+
@dataclass
55+
class MyAccount:
56+
"""
57+
58+
"""
59+
account_id: str
60+
""""""
61+
62+
user_id: str
63+
""""""
64+
65+
username: str
66+
""""""
67+
68+
email: str
69+
""""""
70+
71+
lang: str
72+
""""""
73+
74+
keylayout: str
75+
""""""
76+
77+
authority: AccountAuthority
78+
""""""
79+
80+
updated_datetime: Optional[str]
81+
""""""
82+
83+
reset_requested_email: Optional[str]
84+
""""""
85+
86+
errors: List[str]
87+
""""""

annofabapi/wrapper.py

+15-3
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import annofabapi.utils
1111
from annofabapi import AnnofabApi
1212
from annofabapi.exceptions import AnnofabApiException
13-
from annofabapi.models import (AnnotationSpecs, InputData, Inspection, JobInfo, OrganizationMember, Project,
14-
ProjectMember, SupplementaryData, Task)
13+
from annofabapi.models import (AnnotationSpecs, InputData, Inspection, JobInfo, MyOrganization, OrganizationMember,
14+
Project, ProjectMember, SupplementaryData, Task)
1515

1616
logger = logging.getLogger(__name__)
1717

@@ -75,7 +75,7 @@ def _get_all_objects(func_get_list: Callable, limit: int, **kwargs_for_func_get_
7575
get_XXX関数で取得した情報の一覧
7676
7777
"""
78-
arg_query_params = kwargs_for_func_get_list['query_params']
78+
arg_query_params = kwargs_for_func_get_list.get('query_params')
7979
copied_query_params = copy.deepcopy(arg_query_params) if arg_query_params is not None else {}
8080

8181
all_objects: List[Dict[str, Any]] = []
@@ -387,6 +387,18 @@ def search_updated_inspections(arg_inspection: Inspection) -> bool:
387387
content = self.api.batch_update_inspections(project_id, task_id, input_data_id, req_inspection)[0]
388388
return content
389389

390+
#########################################
391+
# Public Method : AfMyApi
392+
#########################################
393+
def get_all_my_organizations(self) -> List[MyOrganization]:
394+
"""
395+
所属しているすべての組織一覧を取得する
396+
397+
Returns:
398+
すべての所属一覧
399+
"""
400+
return self._get_all_objects(self.api.get_my_organizations, limit=200)
401+
390402
#########################################
391403
# Public Method : AfOrganizationApi
392404
#########################################

docs/dataclass.rst

+4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ annofabapi.dataclass.job module
2727
.. automodule:: annofabapi.dataclass.job
2828
:members:
2929

30+
annofabapi.dataclass.my module
31+
------------------------------
32+
.. automodule:: annofabapi.dataclass.my
33+
:members:
3034

3135
annofabapi.dataclass.organization module
3236
----------------------------------------

generate/generate.sh

+5
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@ declare -a model_files=(${MODELS_DIR}/job_info.py)
146146
cat partial-header/dataclass/common.py partial-header/dataclass/job.py \
147147
${model_files[@]} > ../annofabapi/dataclass/job.py
148148

149+
# My
150+
declare -a model_files=(${MODELS_DIR}/my_organization.py ${MODELS_DIR}/my_account.py)
151+
cat partial-header/dataclass/common.py partial-header/dataclass/my.py \
152+
${model_files[@]} > ../annofabapi/dataclass/my.py
153+
149154
# Organization
150155
declare -a model_files=(${MODELS_DIR}/organization_activity.py ${MODELS_DIR}/organization_summary.py ${MODELS_DIR}/organization.py)
151156
cat partial-header/dataclass/common.py partial-header/dataclass/organization.py \
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from annofabapi.models import OrganizationMemberRole, OrganizationMemberStatus, PricePlan, AccountAuthority
2+
from annofabapi.dataclass.organization import OrganizationSummary

tests/data/dataclass/my-account.json

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"account_id": "12345678-abcd-1234-abcd-1234abcd5678",
3+
"user_id": "test_user_id",
4+
"username": "test_user_name",
5+
"email": "[email protected]",
6+
"reset_requested_email": null,
7+
"lang": "ja-JP",
8+
"keylayout": "ja-JP",
9+
"authority": "user",
10+
"errors": [],
11+
"updated_datetime": "2019-08-13T22:18:31.594+09:00",
12+
"is_external_account": false
13+
}
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"organization_id": "32345678-abcd-1234-abcd-1234abcd5678",
3+
"name": "test-organization",
4+
"email": "[email protected]",
5+
"price_plan": "free",
6+
"summary": {
7+
"last_tasks_updated_datetime": "2019-09-03T18:05:01.508+09:00"
8+
},
9+
"created_datetime": "2018-05-09T07:47:47.913+09:00",
10+
"updated_datetime": "2018-05-09T07:47:47.913+09:00",
11+
"my_role": "owner",
12+
"my_status": "active"
13+
}

tests/test_api.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ def test_my():
6565
my_project_members, _ = api.get_my_project_members()
6666
assert len(my_project_members) > 0
6767

68-
print(f"get_my_organizations")
69-
my_organizations, _ = api.get_my_organizations()
70-
assert len(my_organizations['list']) > 0
68+
print(f"get_my_organizations in wrapper.get_all_my_organizations")
69+
my_organizations = wrapper.get_all_my_organizations()
70+
assert len(my_organizations) > 0
7171

7272
print(f"get_my_projects")
7373
my_projects, _ = api.get_my_projects()

0 commit comments

Comments
 (0)