Skip to content

Commit 5ce922c

Browse files
authored
MPT-16437 Reorganise resource accounts mixins structure (#201)
2 parents 0d09d83 + 980ba89 commit 5ce922c

20 files changed

+1155
-1071
lines changed

mpt_api_client/resources/accounts/account.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
AccountsUsersService,
1919
AsyncAccountsUsersService,
2020
)
21-
from mpt_api_client.resources.accounts.mixins import (
21+
from mpt_api_client.resources.accounts.mixins.activatable_mixin import (
2222
ActivatableMixin,
2323
AsyncActivatableMixin,
24+
)
25+
from mpt_api_client.resources.accounts.mixins.validate_mixin import (
2426
AsyncValidateMixin,
2527
ValidateMixin,
2628
)

mpt_api_client/resources/accounts/account_users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
AccountUserGroupsService,
1313
AsyncAccountUserGroupsService,
1414
)
15-
from mpt_api_client.resources.accounts.mixins import (
15+
from mpt_api_client.resources.accounts.mixins.invitable_mixin import (
1616
AsyncInvitableMixin,
1717
InvitableMixin,
1818
)

mpt_api_client/resources/accounts/accounts_users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
AccountsUserGroupsService,
1111
AsyncAccountsUserGroupsService,
1212
)
13-
from mpt_api_client.resources.accounts.mixins import (
13+
from mpt_api_client.resources.accounts.mixins.invitable_mixin import (
1414
AsyncInvitableMixin,
1515
InvitableMixin,
1616
)

mpt_api_client/resources/accounts/buyers.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717
)
1818
from mpt_api_client.models import Model
1919
from mpt_api_client.models.model import ResourceData
20-
from mpt_api_client.resources.accounts.mixins import (
20+
from mpt_api_client.resources.accounts.mixins.activatable_mixin import (
2121
ActivatableMixin,
2222
AsyncActivatableMixin,
23+
)
24+
from mpt_api_client.resources.accounts.mixins.validate_mixin import (
2325
AsyncValidateMixin,
2426
ValidateMixin,
2527
)

mpt_api_client/resources/accounts/erp_links.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
UpdateMixin,
1111
)
1212
from mpt_api_client.models import Model
13-
from mpt_api_client.resources.accounts.mixins import AsyncBlockableMixin, BlockableMixin
13+
from mpt_api_client.resources.accounts.mixins.blockable_mixin import (
14+
AsyncBlockableMixin,
15+
BlockableMixin,
16+
)
1417

1518

1619
class ErpLink(Model):

mpt_api_client/resources/accounts/mixins.py

Lines changed: 0 additions & 217 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from mpt_api_client.resources.accounts.mixins.activatable_mixin import (
2+
ActivatableMixin,
3+
AsyncActivatableMixin,
4+
)
5+
from mpt_api_client.resources.accounts.mixins.blockable_mixin import (
6+
AsyncBlockableMixin,
7+
BlockableMixin,
8+
)
9+
from mpt_api_client.resources.accounts.mixins.invitable_mixin import (
10+
AsyncInvitableMixin,
11+
InvitableMixin,
12+
)
13+
from mpt_api_client.resources.accounts.mixins.validate_mixin import (
14+
AsyncValidateMixin,
15+
ValidateMixin,
16+
)
17+
18+
__all__ = [ # noqa: WPS410
19+
"ActivatableMixin",
20+
"AsyncActivatableMixin",
21+
"AsyncBlockableMixin",
22+
"AsyncInvitableMixin",
23+
"AsyncValidateMixin",
24+
"BlockableMixin",
25+
"InvitableMixin",
26+
"ValidateMixin",
27+
]
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
from mpt_api_client.models import ResourceData
2+
3+
4+
class ActivatableMixin[Model]:
5+
"""Activatable mixin for activating, enabling, disabling and deactivating resources."""
6+
7+
def activate(self, resource_id: str, resource_data: ResourceData | None = None) -> Model:
8+
"""Activate a resource.
9+
10+
Args:
11+
resource_id: Resource ID
12+
resource_data: Resource data will be updated
13+
"""
14+
return self._resource_action( # type: ignore[attr-defined, no-any-return]
15+
resource_id, "POST", "activate", json=resource_data
16+
)
17+
18+
def deactivate(self, resource_id: str, resource_data: ResourceData | None = None) -> Model:
19+
"""Deactivate a resource.
20+
21+
Args:
22+
resource_id: Resource ID
23+
resource_data: Resource data will be updated
24+
"""
25+
return self._resource_action( # type: ignore[attr-defined, no-any-return]
26+
resource_id, "POST", "deactivate", json=resource_data
27+
)
28+
29+
30+
class AsyncActivatableMixin[Model]:
31+
"""Async activatable mixin for activating, enabling, disabling and deactivating resources."""
32+
33+
async def activate(self, resource_id: str, resource_data: ResourceData | None = None) -> Model:
34+
"""Activate a resource.
35+
36+
Args:
37+
resource_id: Resource ID
38+
resource_data: Resource data will be updated
39+
"""
40+
return await self._resource_action( # type: ignore[attr-defined, no-any-return]
41+
resource_id, "POST", "activate", json=resource_data
42+
)
43+
44+
async def deactivate(
45+
self, resource_id: str, resource_data: ResourceData | None = None
46+
) -> Model:
47+
"""Deactivate a resource.
48+
49+
Args:
50+
resource_id: Resource ID
51+
resource_data: Resource data will be updated
52+
"""
53+
return await self._resource_action( # type: ignore[attr-defined, no-any-return]
54+
resource_id, "POST", "deactivate", json=resource_data
55+
)

0 commit comments

Comments
 (0)