maleo-identity 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of maleo-identity might be problematic. Click here for more details.

Files changed (113) hide show
  1. maleo_identity/__init__.py +0 -0
  2. maleo_identity/client/__init__.py +0 -0
  3. maleo_identity/client/controllers/__init__.py +15 -0
  4. maleo_identity/client/controllers/http/__init__.py +0 -0
  5. maleo_identity/client/controllers/http/organization.py +76 -0
  6. maleo_identity/client/controllers/http/user.py +76 -0
  7. maleo_identity/client/manager.py +56 -0
  8. maleo_identity/client/services/__init__.py +9 -0
  9. maleo_identity/client/services/organization.py +148 -0
  10. maleo_identity/client/services/user.py +148 -0
  11. maleo_identity/constants/__init__.py +13 -0
  12. maleo_identity/constants/organization.py +13 -0
  13. maleo_identity/constants/user.py +34 -0
  14. maleo_identity/constants/user_organization.py +31 -0
  15. maleo_identity/constants/user_profile.py +11 -0
  16. maleo_identity/constants/user_system_role.py +20 -0
  17. maleo_identity/db.py +6 -0
  18. maleo_identity/enums/__init__.py +15 -0
  19. maleo_identity/enums/general.py +5 -0
  20. maleo_identity/enums/organization.py +10 -0
  21. maleo_identity/enums/user.py +15 -0
  22. maleo_identity/enums/user_organization.py +8 -0
  23. maleo_identity/enums/user_profile.py +10 -0
  24. maleo_identity/enums/user_system_role.py +7 -0
  25. maleo_identity/models/__init__.py +9 -0
  26. maleo_identity/models/responses/__init__.py +13 -0
  27. maleo_identity/models/responses/organization.py +46 -0
  28. maleo_identity/models/responses/user.py +46 -0
  29. maleo_identity/models/responses/user_organization.py +25 -0
  30. maleo_identity/models/responses/user_profile.py +46 -0
  31. maleo_identity/models/responses/user_system_role.py +25 -0
  32. maleo_identity/models/schemas/__init__.py +9 -0
  33. maleo_identity/models/schemas/general/__init__.py +13 -0
  34. maleo_identity/models/schemas/general/organization.py +24 -0
  35. maleo_identity/models/schemas/general/user.py +22 -0
  36. maleo_identity/models/schemas/general/user_organization.py +20 -0
  37. maleo_identity/models/schemas/general/user_profile.py +44 -0
  38. maleo_identity/models/schemas/general/user_system_role.py +14 -0
  39. maleo_identity/models/schemas/parameters/__init__.py +13 -0
  40. maleo_identity/models/schemas/parameters/organization.py +10 -0
  41. maleo_identity/models/schemas/parameters/user.py +15 -0
  42. maleo_identity/models/schemas/parameters/user_organization.py +7 -0
  43. maleo_identity/models/schemas/parameters/user_profile.py +22 -0
  44. maleo_identity/models/schemas/parameters/user_system_role.py +8 -0
  45. maleo_identity/models/schemas/results/__init__.py +13 -0
  46. maleo_identity/models/schemas/results/organization.py +18 -0
  47. maleo_identity/models/schemas/results/user.py +18 -0
  48. maleo_identity/models/schemas/results/user_organization.py +7 -0
  49. maleo_identity/models/schemas/results/user_profile.py +34 -0
  50. maleo_identity/models/schemas/results/user_system_role.py +8 -0
  51. maleo_identity/models/tables/__init__.py +13 -0
  52. maleo_identity/models/tables/organization.py +18 -0
  53. maleo_identity/models/tables/user.py +17 -0
  54. maleo_identity/models/tables/user_organization.py +10 -0
  55. maleo_identity/models/tables/user_profile.py +21 -0
  56. maleo_identity/models/tables/user_system_role.py +15 -0
  57. maleo_identity/models/transfers/__init__.py +9 -0
  58. maleo_identity/models/transfers/general/__init__.py +13 -0
  59. maleo_identity/models/transfers/general/organization.py +24 -0
  60. maleo_identity/models/transfers/general/user.py +16 -0
  61. maleo_identity/models/transfers/general/user_organization.py +13 -0
  62. maleo_identity/models/transfers/general/user_profile.py +14 -0
  63. maleo_identity/models/transfers/general/user_system_role.py +13 -0
  64. maleo_identity/models/transfers/parameters/__init__.py +9 -0
  65. maleo_identity/models/transfers/parameters/client/__init__.py +13 -0
  66. maleo_identity/models/transfers/parameters/client/organization.py +19 -0
  67. maleo_identity/models/transfers/parameters/client/user.py +23 -0
  68. maleo_identity/models/transfers/parameters/client/user_organization.py +32 -0
  69. maleo_identity/models/transfers/parameters/client/user_profile.py +22 -0
  70. maleo_identity/models/transfers/parameters/client/user_system_role.py +26 -0
  71. maleo_identity/models/transfers/parameters/general/__init__.py +13 -0
  72. maleo_identity/models/transfers/parameters/general/organization.py +30 -0
  73. maleo_identity/models/transfers/parameters/general/user.py +35 -0
  74. maleo_identity/models/transfers/parameters/general/user_organization.py +31 -0
  75. maleo_identity/models/transfers/parameters/general/user_profile.py +35 -0
  76. maleo_identity/models/transfers/parameters/general/user_system_role.py +25 -0
  77. maleo_identity/models/transfers/parameters/service/__init__.py +13 -0
  78. maleo_identity/models/transfers/parameters/service/organization.py +19 -0
  79. maleo_identity/models/transfers/parameters/service/user.py +23 -0
  80. maleo_identity/models/transfers/parameters/service/user_organization.py +30 -0
  81. maleo_identity/models/transfers/parameters/service/user_profile.py +22 -0
  82. maleo_identity/models/transfers/parameters/service/user_system_role.py +25 -0
  83. maleo_identity/models/transfers/results/__init__.py +7 -0
  84. maleo_identity/models/transfers/results/general/__init__.py +13 -0
  85. maleo_identity/models/transfers/results/general/organization.py +15 -0
  86. maleo_identity/models/transfers/results/general/user.py +15 -0
  87. maleo_identity/models/transfers/results/general/user_organization.py +15 -0
  88. maleo_identity/models/transfers/results/general/user_profile.py +15 -0
  89. maleo_identity/models/transfers/results/general/user_system_role.py +15 -0
  90. maleo_identity/models/transfers/results/query/__init__.py +13 -0
  91. maleo_identity/models/transfers/results/query/organization.py +19 -0
  92. maleo_identity/models/transfers/results/query/user.py +19 -0
  93. maleo_identity/models/transfers/results/query/user_organization.py +19 -0
  94. maleo_identity/models/transfers/results/query/user_profile.py +19 -0
  95. maleo_identity/models/transfers/results/query/user_system_role.py +19 -0
  96. maleo_identity/types/__init__.py +5 -0
  97. maleo_identity/types/results/__init__.py +7 -0
  98. maleo_identity/types/results/general/__init__.py +13 -0
  99. maleo_identity/types/results/general/organization.py +20 -0
  100. maleo_identity/types/results/general/user.py +20 -0
  101. maleo_identity/types/results/general/user_organization.py +20 -0
  102. maleo_identity/types/results/general/user_profile.py +20 -0
  103. maleo_identity/types/results/general/user_system_role.py +20 -0
  104. maleo_identity/types/results/query/__init__.py +13 -0
  105. maleo_identity/types/results/query/organization.py +20 -0
  106. maleo_identity/types/results/query/user.py +20 -0
  107. maleo_identity/types/results/query/user_organization.py +20 -0
  108. maleo_identity/types/results/query/user_profile.py +20 -0
  109. maleo_identity/types/results/query/user_system_role.py +20 -0
  110. maleo_identity-0.0.1.dist-info/METADATA +39 -0
  111. maleo_identity-0.0.1.dist-info/RECORD +113 -0
  112. maleo_identity-0.0.1.dist-info/WHEEL +5 -0
  113. maleo_identity-0.0.1.dist-info/top_level.txt +1 -0
File without changes
File without changes
@@ -0,0 +1,15 @@
1
+ from __future__ import annotations
2
+ from pydantic import Field
3
+ from maleo_foundation.managers.client.base import ClientServiceControllers, ClientControllers
4
+
5
+ from maleo_identity.client.controllers.http.organization import MaleoIdentityOrganizationHTTPController
6
+ class MaleoIdentityOrganizationControllers(ClientServiceControllers):
7
+ http:MaleoIdentityOrganizationHTTPController = Field(..., description="Organization's http controller")
8
+
9
+ from maleo_identity.client.controllers.http.user import MaleoIdentityUserHTTPController
10
+ class MaleoIdentityUserControllers(ClientServiceControllers):
11
+ http:MaleoIdentityUserHTTPController = Field(..., description="User's http controller")
12
+
13
+ class MaleoIdentityControllers(ClientControllers):
14
+ organization:MaleoIdentityOrganizationControllers = Field(..., description="Organization's controllers")
15
+ user:MaleoIdentityUserControllers = Field(..., description="User's controllers")
File without changes
@@ -0,0 +1,76 @@
1
+ from maleo_foundation.managers.client.base import BearerAuth
2
+ from maleo_foundation.managers.client.maleo import MaleoClientHTTPController
3
+ from maleo_foundation.models.transfers.results.client.controllers.http import BaseClientHTTPControllerResults
4
+ from maleo_identity.models.transfers.parameters.general.organization import MaleoIdentityOrganizationGeneralParametersTransfers
5
+ from maleo_identity.models.transfers.parameters.client.organization import MaleoIdentityOrganizationClientParametersTransfers
6
+
7
+ class MaleoIdentityOrganizationHTTPController(MaleoClientHTTPController):
8
+ async def get_organizations(self, parameters:MaleoIdentityOrganizationClientParametersTransfers.GetMultiple) -> BaseClientHTTPControllerResults:
9
+ """Fetch organizations from MaleoIdentity"""
10
+ async with self._manager.get_client() as client:
11
+ #* Define URL
12
+ url = f"{self._manager.url.api}/v1/organizations/"
13
+
14
+ #* Parse parameters to query params
15
+ params = MaleoIdentityOrganizationClientParametersTransfers.GetMultipleQuery.model_validate(parameters.model_dump()).model_dump(exclude={"sort_columns", "date_filters"}, exclude_none=True)
16
+
17
+ #* Create auth
18
+ auth = BearerAuth(token=self._service_manager.token)
19
+
20
+ #* Send request and wait for response
21
+ response = await client.get(url=url, params=params, auth=auth)
22
+ return BaseClientHTTPControllerResults(response=response)
23
+
24
+ async def get_organization(self, parameters:MaleoIdentityOrganizationGeneralParametersTransfers.GetSingle) -> BaseClientHTTPControllerResults:
25
+ """Fetch organization from MaleoIdentity"""
26
+ async with self._manager.get_client() as client:
27
+ #* Define URL
28
+ url = f"{self._manager.url.api}/v1/organizations/{parameters.identifier}/{parameters.value}"
29
+
30
+ #* Parse parameters to query params
31
+ params = MaleoIdentityOrganizationGeneralParametersTransfers.GetSingleQuery.model_validate(parameters.model_dump()).model_dump(exclude_none=True)
32
+
33
+ #* Create auth
34
+ auth = BearerAuth(token=self._service_manager.token)
35
+
36
+ #* Send request and wait for response
37
+ response = await client.get(url=url, params=params, auth=auth)
38
+ return BaseClientHTTPControllerResults(response=response)
39
+
40
+ async def create(self, parameters:MaleoIdentityOrganizationGeneralParametersTransfers.Create) -> BaseClientHTTPControllerResults:
41
+ """Create a new organization in MaleoIdentity"""
42
+ async with self._manager.get_client() as client:
43
+ #* Define URL
44
+ url = f"{self._manager.url.api}/v1/organizations/"
45
+
46
+ #* Declare body
47
+ json = MaleoIdentityOrganizationGeneralParametersTransfers.CreateOrUpdateData.model_validate(parameters.model_dump()).model_dump()
48
+
49
+ #* Parse parameters to query params
50
+ params = MaleoIdentityOrganizationGeneralParametersTransfers.CreateOrUpdateQuery.model_validate(parameters.model_dump()).model_dump(exclude_none=True)
51
+
52
+ #* Create auth
53
+ auth = BearerAuth(token=self._service_manager.token)
54
+
55
+ #* Send request and wait for response
56
+ response = await client.post(url=url, json=json, params=params, auth=auth)
57
+ return BaseClientHTTPControllerResults(response=response)
58
+
59
+ async def update(self, parameters:MaleoIdentityOrganizationGeneralParametersTransfers.Update) -> BaseClientHTTPControllerResults:
60
+ """Update organization's data in MaleoIdentity"""
61
+ async with self._manager.get_client() as client:
62
+ #* Define URL
63
+ url = f"{self._manager.url.api}/v1/organizations/{parameters.identifier}/{parameters.value}"
64
+
65
+ #* Declare body
66
+ json = MaleoIdentityOrganizationGeneralParametersTransfers.CreateOrUpdateData.model_validate(parameters.model_dump()).model_dump()
67
+
68
+ #* Parse parameters to query params
69
+ params = MaleoIdentityOrganizationGeneralParametersTransfers.CreateOrUpdateQuery.model_validate(parameters.model_dump()).model_dump(exclude_none=True)
70
+
71
+ #* Create auth
72
+ auth = BearerAuth(token=self._service_manager.token)
73
+
74
+ #* Send request and wait for response
75
+ response = await client.put(url=url, json=json, params=params, auth=auth)
76
+ return BaseClientHTTPControllerResults(response=response)
@@ -0,0 +1,76 @@
1
+ from maleo_foundation.managers.client.base import BearerAuth
2
+ from maleo_foundation.managers.client.maleo import MaleoClientHTTPController
3
+ from maleo_foundation.models.transfers.results.client.controllers.http import BaseClientHTTPControllerResults
4
+ from maleo_identity.models.transfers.parameters.general.user import MaleoIdentityUserGeneralParametersTransfers
5
+ from maleo_identity.models.transfers.parameters.client.user import MaleoIdentityUserClientParametersTransfers
6
+
7
+ class MaleoIdentityUserHTTPController(MaleoClientHTTPController):
8
+ async def get_users(self, parameters:MaleoIdentityUserClientParametersTransfers.GetMultiple) -> BaseClientHTTPControllerResults:
9
+ """Fetch users from MaleoIdentity"""
10
+ async with self._manager.get_client() as client:
11
+ #* Define URL
12
+ url = f"{self._manager.url.api}/v1/users/"
13
+
14
+ #* Parse parameters to query params
15
+ params = MaleoIdentityUserClientParametersTransfers.GetMultipleQuery.model_validate(parameters.model_dump()).model_dump(exclude={"sort_columns", "date_filters"}, exclude_none=True)
16
+
17
+ #* Create auth
18
+ auth = BearerAuth(token=self._service_manager.token)
19
+
20
+ #* Send request and wait for response
21
+ response = await client.get(url=url, params=params, auth=auth)
22
+ return BaseClientHTTPControllerResults(response=response)
23
+
24
+ async def get_user(self, parameters:MaleoIdentityUserGeneralParametersTransfers.GetSingle) -> BaseClientHTTPControllerResults:
25
+ """Fetch user from MaleoIdentity"""
26
+ async with self._manager.get_client() as client:
27
+ #* Define URL
28
+ url = f"{self._manager.url.api}/v1/users/{parameters.identifier}/{parameters.value}"
29
+
30
+ #* Parse parameters to query params
31
+ params = MaleoIdentityUserGeneralParametersTransfers.GetSingleQuery.model_validate(parameters.model_dump()).model_dump(exclude_none=True)
32
+
33
+ #* Create auth
34
+ auth = BearerAuth(token=self._service_manager.token)
35
+
36
+ #* Send request and wait for response
37
+ response = await client.get(url=url, params=params, auth=auth)
38
+ return BaseClientHTTPControllerResults(response=response)
39
+
40
+ async def create(self, parameters:MaleoIdentityUserGeneralParametersTransfers.Create) -> BaseClientHTTPControllerResults:
41
+ """Create a new user in MaleoIdentity"""
42
+ async with self._manager.get_client() as client:
43
+ #* Define URL
44
+ url = f"{self._manager.url.api}/v1/users/"
45
+
46
+ #* Declare body
47
+ json = MaleoIdentityUserGeneralParametersTransfers.CreateData.model_validate(parameters.model_dump()).model_dump()
48
+
49
+ #* Parse parameters to query params
50
+ params = MaleoIdentityUserGeneralParametersTransfers.CreateOrUpdateQuery.model_validate(parameters.model_dump()).model_dump(exclude_none=True)
51
+
52
+ #* Create auth
53
+ auth = BearerAuth(token=self._service_manager.token)
54
+
55
+ #* Send request and wait for response
56
+ response = await client.post(url=url, json=json, params=params, auth=auth)
57
+ return BaseClientHTTPControllerResults(response=response)
58
+
59
+ async def update(self, parameters:MaleoIdentityUserGeneralParametersTransfers.Update) -> BaseClientHTTPControllerResults:
60
+ """Update user's data in MaleoIdentity"""
61
+ async with self._manager.get_client() as client:
62
+ #* Define URL
63
+ url = f"{self._manager.url.api}/v1/users/{parameters.identifier}/{parameters.value}"
64
+
65
+ #* Declare body
66
+ json = MaleoIdentityUserGeneralParametersTransfers.UpdateData.model_validate(parameters.model_dump()).model_dump()
67
+
68
+ #* Parse parameters to query params
69
+ params = MaleoIdentityUserGeneralParametersTransfers.CreateOrUpdateQuery.model_validate(parameters.model_dump()).model_dump(exclude_none=True)
70
+
71
+ #* Create auth
72
+ auth = BearerAuth(token=self._service_manager.token)
73
+
74
+ #* Send request and wait for response
75
+ response = await client.put(url=url, json=json, params=params, auth=auth)
76
+ return BaseClientHTTPControllerResults(response=response)
@@ -0,0 +1,56 @@
1
+ from __future__ import annotations
2
+ from maleo_foundation.managers.client.maleo import MaleoClientManager
3
+ from maleo_foundation.managers.service import ServiceManager
4
+ from maleo_identity.client.controllers.http.organization import MaleoIdentityOrganizationHTTPController
5
+ from maleo_identity.client.controllers.http.user import MaleoIdentityUserHTTPController
6
+ from maleo_identity.client.controllers import (
7
+ MaleoIdentityOrganizationControllers,
8
+ MaleoIdentityUserControllers,
9
+ MaleoIdentityControllers
10
+ )
11
+ from maleo_identity.client.services import (
12
+ MaleoIdentityOrganizationClientService,
13
+ MaleoIdentityUserClientService,
14
+ MaleoIdentityServices
15
+ )
16
+
17
+ class MaleoIdentityClientManager(MaleoClientManager):
18
+ def __init__(self, service_manager:ServiceManager):
19
+ key = service_manager.configs.client.maleo.identity.key
20
+ name = service_manager.configs.client.maleo.identity.name
21
+ url = service_manager.configs.client.maleo.identity.url
22
+ super().__init__(key, name, url, service_manager)
23
+ self._initialize_controllers()
24
+ self._initialize_services()
25
+ self._logger.info("Client manager initialized successfully")
26
+
27
+ def _initialize_controllers(self):
28
+ super()._initialize_controllers()
29
+ #* Organization controllers
30
+ organization_http_controller = MaleoIdentityOrganizationHTTPController(service_manager=self.service_manager, manager=self._controller_managers.http)
31
+ organization_controllers = MaleoIdentityOrganizationControllers(http=organization_http_controller)
32
+ #* User controllers
33
+ user_http_controller = MaleoIdentityUserHTTPController(service_manager=self.service_manager, manager=self._controller_managers.http)
34
+ user_controllers = MaleoIdentityUserControllers(http=user_http_controller)
35
+ #* All controllers
36
+ self._controllers = MaleoIdentityControllers(
37
+ organization=organization_controllers,
38
+ user=user_controllers
39
+ )
40
+
41
+ @property
42
+ def controllers(self) -> MaleoIdentityControllers:
43
+ return self._controllers
44
+
45
+ def _initialize_services(self):
46
+ super()._initialize_services()
47
+ organization_service = MaleoIdentityOrganizationClientService(logger=self._logger, controllers=self._controllers.organization)
48
+ user_service = MaleoIdentityUserClientService(logger=self._logger, controllers=self._controllers.user)
49
+ self._services = MaleoIdentityServices(
50
+ organization=organization_service,
51
+ user=user_service
52
+ )
53
+
54
+ @property
55
+ def services(self) -> MaleoIdentityServices:
56
+ return self._services
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+ from pydantic import Field
3
+ from maleo_foundation.managers.client.base import ClientServices
4
+ from maleo_identity.client.services.organization import MaleoIdentityOrganizationClientService
5
+ from maleo_identity.client.services.user import MaleoIdentityUserClientService
6
+
7
+ class MaleoIdentityServices(ClientServices):
8
+ organization:MaleoIdentityOrganizationClientService = Field(..., description="Organization's service")
9
+ user:MaleoIdentityUserClientService = Field(..., description="User's service")
@@ -0,0 +1,148 @@
1
+ from fastapi import status
2
+ from maleo_foundation.managers.client.base import ClientService
3
+ from maleo_foundation.utils.exceptions import BaseExceptions
4
+ from maleo_identity.client.controllers import MaleoIdentityOrganizationControllers
5
+ from maleo_identity.enums.general import MaleoIdentityGeneralEnums
6
+ from maleo_identity.models.transfers.parameters.general.organization import MaleoIdentityOrganizationGeneralParametersTransfers
7
+ from maleo_identity.models.transfers.parameters.client.organization import MaleoIdentityOrganizationClientParametersTransfers
8
+ from maleo_identity.models.transfers.results.general.organization import MaleoIdentityOrganizationGeneralResultsTransfers
9
+ from maleo_identity.types.results.general.organization import MaleoIdentityOrganizationGeneralResultsTypes
10
+
11
+ class MaleoIdentityOrganizationClientService(ClientService):
12
+ def __init__(self, logger, controllers:MaleoIdentityOrganizationControllers):
13
+ super().__init__(logger)
14
+ self._controllers = controllers
15
+
16
+ @property
17
+ def controllers(self) -> MaleoIdentityOrganizationControllers:
18
+ raise self._controllers
19
+
20
+ async def get_organizations(
21
+ self,
22
+ parameters:MaleoIdentityOrganizationClientParametersTransfers.GetMultiple,
23
+ controller_type:MaleoIdentityGeneralEnums.ClientControllerType = MaleoIdentityGeneralEnums.ClientControllerType.HTTP
24
+ ) -> MaleoIdentityOrganizationGeneralResultsTypes.GetMultiple:
25
+ """Retrieve organizations from MaleoIdentity"""
26
+ @BaseExceptions.service_exception_handler(
27
+ operation="retrieving organizations",
28
+ logger=self._logger,
29
+ fail_result_class=MaleoIdentityOrganizationGeneralResultsTransfers.Fail
30
+ )
31
+ async def _impl():
32
+ #* Validate chosen controller type
33
+ if not isinstance(controller_type, MaleoIdentityGeneralEnums.ClientControllerType):
34
+ message = "Invalid controller type"
35
+ description = "The provided controller type did not exists"
36
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail(message=message, description=description)
37
+ #* Retrieve organizations using chosen controller
38
+ if controller_type == MaleoIdentityGeneralEnums.ClientControllerType.HTTP:
39
+ controller_result = await self._controllers.http.get_organizations(parameters=parameters)
40
+ else:
41
+ message = "Invalid controller type"
42
+ description = "The provided controller type has not been implemented"
43
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail(message=message, description=description)
44
+ #* Return proper response
45
+ if not controller_result.success:
46
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail.model_validate(controller_result.content)
47
+ else:
48
+ if controller_result.content["data"] is None:
49
+ return MaleoIdentityOrganizationGeneralResultsTransfers.NoData.model_validate(controller_result.content)
50
+ else:
51
+ return MaleoIdentityOrganizationGeneralResultsTransfers.MultipleData.model_validate(controller_result.content)
52
+ return await _impl()
53
+
54
+ async def get_organization(
55
+ self,
56
+ parameters:MaleoIdentityOrganizationGeneralParametersTransfers.GetSingle,
57
+ controller_type:MaleoIdentityGeneralEnums.ClientControllerType = MaleoIdentityGeneralEnums.ClientControllerType.HTTP
58
+ ) -> MaleoIdentityOrganizationGeneralResultsTypes.GetSingle:
59
+ """Retrieve organization from MaleoIdentity"""
60
+ @BaseExceptions.service_exception_handler(
61
+ operation="retrieving organization",
62
+ logger=self._logger,
63
+ fail_result_class=MaleoIdentityOrganizationGeneralResultsTransfers.Fail
64
+ )
65
+ async def _impl():
66
+ #* Validate chosen controller type
67
+ if not isinstance(controller_type, MaleoIdentityGeneralEnums.ClientControllerType):
68
+ message = "Invalid controller type"
69
+ description = "The provided controller type did not exists"
70
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail(message=message, description=description)
71
+ #* Retrieve organization using chosen controller
72
+ if controller_type == MaleoIdentityGeneralEnums.ClientControllerType.HTTP:
73
+ controller_result = await self._controllers.http.get_organization(parameters=parameters)
74
+ else:
75
+ message = "Invalid controller type"
76
+ description = "The provided controller type has not been implemented"
77
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail(message=message, description=description)
78
+ #* Return proper response
79
+ if not controller_result.success:
80
+ if controller_result.status_code != status.HTTP_404_NOT_FOUND:
81
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail.model_validate(controller_result.content)
82
+ else:
83
+ return MaleoIdentityOrganizationGeneralResultsTransfers.NoData.model_validate(controller_result.content)
84
+ else:
85
+ return MaleoIdentityOrganizationGeneralResultsTransfers.SingleData.model_validate(controller_result.content)
86
+ return await _impl()
87
+
88
+ async def create(
89
+ self,
90
+ parameters:MaleoIdentityOrganizationGeneralParametersTransfers.Create,
91
+ controller_type:MaleoIdentityGeneralEnums.ClientControllerType = MaleoIdentityGeneralEnums.ClientControllerType.HTTP
92
+ ) -> MaleoIdentityOrganizationGeneralResultsTypes.CreateOrUpdate:
93
+ """Create a new organization in MaleoIdentity"""
94
+ @BaseExceptions.service_exception_handler(
95
+ operation="creating a new organization",
96
+ logger=self._logger,
97
+ fail_result_class=MaleoIdentityOrganizationGeneralResultsTransfers.Fail
98
+ )
99
+ async def _impl():
100
+ #* Validate chosen controller type
101
+ if not isinstance(controller_type, MaleoIdentityGeneralEnums.ClientControllerType):
102
+ message = "Invalid controller type"
103
+ description = "The provided controller type did not exists"
104
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail(message=message, description=description)
105
+ #* Create a new organization using chosen controller
106
+ if controller_type == MaleoIdentityGeneralEnums.ClientControllerType.HTTP:
107
+ controller_result = await self._controllers.http.create(parameters=parameters)
108
+ else:
109
+ message = "Invalid controller type"
110
+ description = "The provided controller type has not been implemented"
111
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail(message=message, description=description)
112
+ #* Return proper response
113
+ if not controller_result.success:
114
+ return MaleoIdentityOrganizationGeneralResultsTransfers.NoData.model_validate(controller_result.content)
115
+ else:
116
+ return MaleoIdentityOrganizationGeneralResultsTransfers.SingleData.model_validate(controller_result.content)
117
+ return await _impl()
118
+
119
+ async def update(
120
+ self,
121
+ parameters:MaleoIdentityOrganizationGeneralParametersTransfers.Update,
122
+ controller_type:MaleoIdentityGeneralEnums.ClientControllerType = MaleoIdentityGeneralEnums.ClientControllerType.HTTP
123
+ ) -> MaleoIdentityOrganizationGeneralResultsTypes.CreateOrUpdate:
124
+ """Update organization's data in MaleoIdentity"""
125
+ @BaseExceptions.service_exception_handler(
126
+ operation="updating organization's data",
127
+ logger=self._logger,
128
+ fail_result_class=MaleoIdentityOrganizationGeneralResultsTransfers.Fail
129
+ )
130
+ async def _impl():
131
+ #* Validate chosen controller type
132
+ if not isinstance(controller_type, MaleoIdentityGeneralEnums.ClientControllerType):
133
+ message = "Invalid controller type"
134
+ description = "The provided controller type did not exists"
135
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail(message=message, description=description)
136
+ #* Update organization's data using chosen controller
137
+ if controller_type == MaleoIdentityGeneralEnums.ClientControllerType.HTTP:
138
+ controller_result = await self._controllers.http.update(parameters=parameters)
139
+ else:
140
+ message = "Invalid controller type"
141
+ description = "The provided controller type has not been implemented"
142
+ return MaleoIdentityOrganizationGeneralResultsTransfers.Fail(message=message, description=description)
143
+ #* Return proper response
144
+ if not controller_result.success:
145
+ return MaleoIdentityOrganizationGeneralResultsTransfers.NoData.model_validate(controller_result.content)
146
+ else:
147
+ return MaleoIdentityOrganizationGeneralResultsTransfers.SingleData.model_validate(controller_result.content)
148
+ return await _impl()
@@ -0,0 +1,148 @@
1
+ from fastapi import status
2
+ from maleo_foundation.managers.client.base import ClientService
3
+ from maleo_foundation.utils.exceptions import BaseExceptions
4
+ from maleo_identity.client.controllers import MaleoIdentityUserControllers
5
+ from maleo_identity.enums.general import MaleoIdentityGeneralEnums
6
+ from maleo_identity.models.transfers.parameters.general.user import MaleoIdentityUserGeneralParametersTransfers
7
+ from maleo_identity.models.transfers.parameters.client.user import MaleoIdentityUserClientParametersTransfers
8
+ from maleo_identity.models.transfers.results.general.user import MaleoIdentityUserGeneralResultsTransfers
9
+ from maleo_identity.types.results.general.user import MaleoIdentityUserGeneralResultsTypes
10
+
11
+ class MaleoIdentityUserClientService(ClientService):
12
+ def __init__(self, logger, controllers:MaleoIdentityUserControllers):
13
+ super().__init__(logger)
14
+ self._controllers = controllers
15
+
16
+ @property
17
+ def controllers(self) -> MaleoIdentityUserControllers:
18
+ raise self._controllers
19
+
20
+ async def get_users(
21
+ self,
22
+ parameters:MaleoIdentityUserClientParametersTransfers.GetMultiple,
23
+ controller_type:MaleoIdentityGeneralEnums.ClientControllerType = MaleoIdentityGeneralEnums.ClientControllerType.HTTP
24
+ ) -> MaleoIdentityUserGeneralResultsTypes.GetMultiple:
25
+ """Retrieve users from MaleoIdentity"""
26
+ @BaseExceptions.service_exception_handler(
27
+ operation="retrieving users",
28
+ logger=self._logger,
29
+ fail_result_class=MaleoIdentityUserGeneralResultsTransfers.Fail
30
+ )
31
+ async def _impl():
32
+ #* Validate chosen controller type
33
+ if not isinstance(controller_type, MaleoIdentityGeneralEnums.ClientControllerType):
34
+ message = "Invalid controller type"
35
+ description = "The provided controller type did not exists"
36
+ return MaleoIdentityUserGeneralResultsTransfers.Fail(message=message, description=description)
37
+ #* Retrieve users using chosen controller
38
+ if controller_type == MaleoIdentityGeneralEnums.ClientControllerType.HTTP:
39
+ controller_result = await self._controllers.http.get_users(parameters=parameters)
40
+ else:
41
+ message = "Invalid controller type"
42
+ description = "The provided controller type has not been implemented"
43
+ return MaleoIdentityUserGeneralResultsTransfers.Fail(message=message, description=description)
44
+ #* Return proper response
45
+ if not controller_result.success:
46
+ return MaleoIdentityUserGeneralResultsTransfers.Fail.model_validate(controller_result.content)
47
+ else:
48
+ if controller_result.content["data"] is None:
49
+ return MaleoIdentityUserGeneralResultsTransfers.NoData.model_validate(controller_result.content)
50
+ else:
51
+ return MaleoIdentityUserGeneralResultsTransfers.MultipleData.model_validate(controller_result.content)
52
+ return await _impl()
53
+
54
+ async def get_user(
55
+ self,
56
+ parameters:MaleoIdentityUserGeneralParametersTransfers.GetSingle,
57
+ controller_type:MaleoIdentityGeneralEnums.ClientControllerType = MaleoIdentityGeneralEnums.ClientControllerType.HTTP
58
+ ) -> MaleoIdentityUserGeneralResultsTypes.GetSingle:
59
+ """Retrieve user from MaleoIdentity"""
60
+ @BaseExceptions.service_exception_handler(
61
+ operation="retrieving user",
62
+ logger=self._logger,
63
+ fail_result_class=MaleoIdentityUserGeneralResultsTransfers.Fail
64
+ )
65
+ async def _impl():
66
+ #* Validate chosen controller type
67
+ if not isinstance(controller_type, MaleoIdentityGeneralEnums.ClientControllerType):
68
+ message = "Invalid controller type"
69
+ description = "The provided controller type did not exists"
70
+ return MaleoIdentityUserGeneralResultsTransfers.Fail(message=message, description=description)
71
+ #* Retrieve user using chosen controller
72
+ if controller_type == MaleoIdentityGeneralEnums.ClientControllerType.HTTP:
73
+ controller_result = await self._controllers.http.get_user(parameters=parameters)
74
+ else:
75
+ message = "Invalid controller type"
76
+ description = "The provided controller type has not been implemented"
77
+ return MaleoIdentityUserGeneralResultsTransfers.Fail(message=message, description=description)
78
+ #* Return proper response
79
+ if not controller_result.success:
80
+ if controller_result.status_code != status.HTTP_404_NOT_FOUND:
81
+ return MaleoIdentityUserGeneralResultsTransfers.Fail.model_validate(controller_result.content)
82
+ else:
83
+ return MaleoIdentityUserGeneralResultsTransfers.NoData.model_validate(controller_result.content)
84
+ else:
85
+ return MaleoIdentityUserGeneralResultsTransfers.SingleData.model_validate(controller_result.content)
86
+ return await _impl()
87
+
88
+ async def create(
89
+ self,
90
+ parameters:MaleoIdentityUserGeneralParametersTransfers.Create,
91
+ controller_type:MaleoIdentityGeneralEnums.ClientControllerType = MaleoIdentityGeneralEnums.ClientControllerType.HTTP
92
+ ) -> MaleoIdentityUserGeneralResultsTypes.CreateOrUpdate:
93
+ """Create a new user in MaleoIdentity"""
94
+ @BaseExceptions.service_exception_handler(
95
+ operation="creating a new user",
96
+ logger=self._logger,
97
+ fail_result_class=MaleoIdentityUserGeneralResultsTransfers.Fail
98
+ )
99
+ async def _impl():
100
+ #* Validate chosen controller type
101
+ if not isinstance(controller_type, MaleoIdentityGeneralEnums.ClientControllerType):
102
+ message = "Invalid controller type"
103
+ description = "The provided controller type did not exists"
104
+ return MaleoIdentityUserGeneralResultsTransfers.Fail(message=message, description=description)
105
+ #* Create a new user using chosen controller
106
+ if controller_type == MaleoIdentityGeneralEnums.ClientControllerType.HTTP:
107
+ controller_result = await self._controllers.http.create(parameters=parameters)
108
+ else:
109
+ message = "Invalid controller type"
110
+ description = "The provided controller type has not been implemented"
111
+ return MaleoIdentityUserGeneralResultsTransfers.Fail(message=message, description=description)
112
+ #* Return proper response
113
+ if not controller_result.success:
114
+ return MaleoIdentityUserGeneralResultsTransfers.NoData.model_validate(controller_result.content)
115
+ else:
116
+ return MaleoIdentityUserGeneralResultsTransfers.SingleData.model_validate(controller_result.content)
117
+ return await _impl()
118
+
119
+ async def update(
120
+ self,
121
+ parameters:MaleoIdentityUserGeneralParametersTransfers.Update,
122
+ controller_type:MaleoIdentityGeneralEnums.ClientControllerType = MaleoIdentityGeneralEnums.ClientControllerType.HTTP
123
+ ) -> MaleoIdentityUserGeneralResultsTypes.CreateOrUpdate:
124
+ """Update user's data in MaleoIdentity"""
125
+ @BaseExceptions.service_exception_handler(
126
+ operation="updating user's data",
127
+ logger=self._logger,
128
+ fail_result_class=MaleoIdentityUserGeneralResultsTransfers.Fail
129
+ )
130
+ async def _impl():
131
+ #* Validate chosen controller type
132
+ if not isinstance(controller_type, MaleoIdentityGeneralEnums.ClientControllerType):
133
+ message = "Invalid controller type"
134
+ description = "The provided controller type did not exists"
135
+ return MaleoIdentityUserGeneralResultsTransfers.Fail(message=message, description=description)
136
+ #* Update user's data using chosen controller
137
+ if controller_type == MaleoIdentityGeneralEnums.ClientControllerType.HTTP:
138
+ controller_result = await self._controllers.http.update(parameters=parameters)
139
+ else:
140
+ message = "Invalid controller type"
141
+ description = "The provided controller type has not been implemented"
142
+ return MaleoIdentityUserGeneralResultsTransfers.Fail(message=message, description=description)
143
+ #* Return proper response
144
+ if not controller_result.success:
145
+ return MaleoIdentityUserGeneralResultsTransfers.NoData.model_validate(controller_result.content)
146
+ else:
147
+ return MaleoIdentityUserGeneralResultsTransfers.SingleData.model_validate(controller_result.content)
148
+ return await _impl()
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+ from .organization import MaleoIdentityOrganizationConstants
3
+ from .user import MaleoIdentityUserConstants
4
+ from .user_profile import MaleoIdentityUserProfileConstants
5
+ from .user_system_role import MaleoIdentityUserSystemRoleConstants
6
+ from .user_organization import MaleoIdentityUserOrganizationConstants
7
+
8
+ class MaleoIdentityConstants:
9
+ Organization = MaleoIdentityOrganizationConstants
10
+ User = MaleoIdentityUserConstants
11
+ UserProfile = MaleoIdentityUserProfileConstants
12
+ UserSystemRole = MaleoIdentityUserSystemRoleConstants
13
+ UserOrganization = MaleoIdentityUserOrganizationConstants
@@ -0,0 +1,13 @@
1
+ from typing import Dict
2
+ from uuid import UUID
3
+ from maleo_identity.enums.organization import MaleoIdentityOrganizationEnums
4
+
5
+ class MaleoIdentityOrganizationConstants:
6
+ IDENTIFIER_TYPE_VALUE_TYPE_MAP:Dict[
7
+ MaleoIdentityOrganizationEnums.IdentifierType,
8
+ object
9
+ ] = {
10
+ MaleoIdentityOrganizationEnums.IdentifierType.ID: int,
11
+ MaleoIdentityOrganizationEnums.IdentifierType.UUID: UUID,
12
+ MaleoIdentityOrganizationEnums.IdentifierType.KEY: str
13
+ }
@@ -0,0 +1,34 @@
1
+ from typing import Dict, List
2
+ from uuid import UUID
3
+ from maleo_identity.enums.user import MaleoIdentityUserEnums
4
+ from maleo_identity.enums.user_profile import MaleoIdentityUserProfileEnums
5
+
6
+ class MaleoIdentityUserConstants:
7
+ IDENTIFIER_TYPE_VALUE_TYPE_MAP:Dict[
8
+ MaleoIdentityUserEnums.IdentifierType,
9
+ object
10
+ ] = {
11
+ MaleoIdentityUserEnums.IdentifierType.ID: int,
12
+ MaleoIdentityUserEnums.IdentifierType.UUID: UUID,
13
+ MaleoIdentityUserEnums.IdentifierType.USERNAME: str,
14
+ MaleoIdentityUserEnums.IdentifierType.EMAIL: str,
15
+ MaleoIdentityUserEnums.IdentifierType.PHONE: str
16
+ }
17
+
18
+ EXPANDABLE_FIELDS_DEPENDENCIES_MAP:Dict[
19
+ MaleoIdentityUserEnums.ExpandableFields,
20
+ List[MaleoIdentityUserEnums.ExpandableFields]
21
+ ] = {
22
+ MaleoIdentityUserEnums.ExpandableFields.PROFILE: [
23
+ MaleoIdentityUserEnums.ExpandableFields.GENDER,
24
+ MaleoIdentityUserEnums.ExpandableFields.BLOOD_TYPE
25
+ ]
26
+ }
27
+
28
+ USER_PROFILE_EXPANDABLE_FIELDS_MAP:Dict[
29
+ MaleoIdentityUserEnums.ExpandableFields,
30
+ MaleoIdentityUserProfileEnums.ExpandableFields
31
+ ] = {
32
+ MaleoIdentityUserEnums.ExpandableFields.GENDER: MaleoIdentityUserProfileEnums.ExpandableFields.GENDER,
33
+ MaleoIdentityUserEnums.ExpandableFields.BLOOD_TYPE: MaleoIdentityUserProfileEnums.ExpandableFields.BLOOD_TYPE
34
+ }
@@ -0,0 +1,31 @@
1
+ from typing import Dict, List
2
+ from maleo_identity.enums.user import MaleoIdentityUserEnums
3
+ from maleo_identity.enums.organization import MaleoIdentityOrganizationEnums
4
+ from maleo_identity.enums.user_organization import MaleoIdentityUserOrganizationEnums
5
+
6
+ class MaleoIdentityUserOrganizationConstants:
7
+ EXPANDABLE_FIELDS_DEPENDENCIES_MAP:Dict[
8
+ MaleoIdentityUserOrganizationEnums.ExpandableFields,
9
+ List[MaleoIdentityUserOrganizationEnums.ExpandableFields]
10
+ ] = {
11
+ MaleoIdentityUserOrganizationEnums.ExpandableFields.USER: [
12
+ MaleoIdentityUserOrganizationEnums.ExpandableFields.USER_TYPE
13
+ ],
14
+ MaleoIdentityUserOrganizationEnums.ExpandableFields.ORGANIZATION: [
15
+ MaleoIdentityUserOrganizationEnums.ExpandableFields.ORGANIZATION_TYPE
16
+ ]
17
+ }
18
+
19
+ USER_EXPANDABLE_FIELDS_MAP:Dict[
20
+ MaleoIdentityUserOrganizationEnums.ExpandableFields,
21
+ MaleoIdentityUserEnums.ExpandableFields
22
+ ] = {
23
+ MaleoIdentityUserOrganizationEnums.ExpandableFields.USER_TYPE: MaleoIdentityUserEnums.ExpandableFields.USER_TYPE
24
+ }
25
+
26
+ ORGANIZATION_EXPANDABLE_FIELDS_MAP:Dict[
27
+ MaleoIdentityUserOrganizationEnums.ExpandableFields,
28
+ MaleoIdentityOrganizationEnums.ExpandableFields
29
+ ] = {
30
+ MaleoIdentityUserOrganizationEnums.ExpandableFields.ORGANIZATION_TYPE: MaleoIdentityOrganizationEnums.ExpandableFields.ORGANIZATION_TYPE
31
+ }
@@ -0,0 +1,11 @@
1
+ from typing import Dict
2
+ from maleo_identity.enums.user_profile import MaleoIdentityUserProfileEnums
3
+
4
+ class MaleoIdentityUserProfileConstants:
5
+ IDENTIFIER_TYPE_VALUE_TYPE_MAP:Dict[
6
+ MaleoIdentityUserProfileEnums.IdentifierType,
7
+ object
8
+ ] = {
9
+ MaleoIdentityUserProfileEnums.IdentifierType.USER_ID: int,
10
+ MaleoIdentityUserProfileEnums.IdentifierType.ID_CARD: str,
11
+ }