ul-pii-sdk 4.2.2__tar.gz → 4.2.5__tar.gz

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.
Files changed (22) hide show
  1. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/PKG-INFO +1 -1
  2. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/pii_sdk/pii_sdk.py +17 -30
  3. ul_pii_sdk-4.2.5/pii_sdk/types/api_ogranization.py +62 -0
  4. ul_pii_sdk-4.2.5/pii_sdk/types/api_user.py +5 -0
  5. ul_pii_sdk-4.2.5/pii_sdk/types/enums/organization_user_state.py +6 -0
  6. ul_pii_sdk-4.2.5/pii_sdk/utils/__init__.py +0 -0
  7. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/setup.py +1 -1
  8. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/ul_pii_sdk.egg-info/PKG-INFO +1 -1
  9. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/ul_pii_sdk.egg-info/SOURCES.txt +3 -0
  10. ul_pii_sdk-4.2.2/pii_sdk/types/api_ogranization.py +0 -38
  11. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/README.md +0 -0
  12. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/pii_sdk/__init__.py +0 -0
  13. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/pii_sdk/errors.py +0 -0
  14. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/pii_sdk/pii_sdk_config.py +0 -0
  15. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/pii_sdk/py.typed +0 -0
  16. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/pii_sdk/types/__init__.py +0 -0
  17. {ul_pii_sdk-4.2.2/pii_sdk/utils → ul_pii_sdk-4.2.5/pii_sdk/types/enums}/__init__.py +0 -0
  18. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/pii_sdk/utils/internal_api_error_handler.py +0 -0
  19. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/setup.cfg +0 -0
  20. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/ul_pii_sdk.egg-info/dependency_links.txt +0 -0
  21. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/ul_pii_sdk.egg-info/requires.txt +0 -0
  22. {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.5}/ul_pii_sdk.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ul_pii_sdk
3
- Version: 4.2.2
3
+ Version: 4.2.5
4
4
  Summary: Pii sdk
5
5
  Author: Unic-lab
6
6
  License: MIT
@@ -1,4 +1,5 @@
1
1
  import json
2
+
2
3
  from uuid import UUID
3
4
  from typing import List
4
5
 
@@ -6,8 +7,10 @@ from ul_api_utils.internal_api.internal_api import InternalApi
6
7
  from ul_api_utils.internal_api.internal_api_response import InternalApiResponse
7
8
 
8
9
  from pii_sdk.pii_sdk_config import PiiSdkConfig
9
- from pii_sdk.types.api_ogranization import ApiOrganization, ApiOrganizationAvailableEvents, ApiOrganizationSendCriticalEventsEmailResponse
10
+ from pii_sdk.types.api_ogranization import ApiOrganization, ApiOrganizationAvailableEvents
11
+ from pii_sdk.types.api_user import ApiUserEventsToSendEmail
10
12
  from pii_sdk.utils.internal_api_error_handler import internal_api_error_handler
13
+ from pii_sdk.types.api_ogranization import ApiUserListResponse, ApiOrganizationUserEmails
11
14
 
12
15
 
13
16
  class PiiSdk:
@@ -41,34 +44,18 @@ class PiiSdk:
41
44
  @internal_api_error_handler
42
45
  def get_organizations_available_events(self, organization_id: UUID) -> InternalApiResponse[ApiOrganizationAvailableEvents]:
43
46
  return self._api.request_get(f'/organizations/{organization_id}/available_events').typed(ApiOrganizationAvailableEvents).check()
47
+
48
+ @internal_api_error_handler
49
+ def get_organizations_users_list(self, organization_id: UUID) -> InternalApiResponse[List[ApiUserListResponse]]: # type: ignore
50
+ return self._api.request_get(f'/organizations/{organization_id}/users/list').typed(List[ApiUserListResponse]).check()
44
51
 
45
52
  @internal_api_error_handler
46
- def send_critical_events_email(
47
- self,
48
- organization_id: UUID,
49
- organization_name: str,
50
- abnormal_event_objects: list[str],
51
- other_critical: list[str] | None = None,
52
- ) -> InternalApiResponse[ApiOrganizationSendCriticalEventsEmailResponse]:
53
- """
54
- Отправляет письма о критических событиях всем актуальным пользователям организации.
55
- organization_id: UUID организации, в которой делается рассылка
56
- organization_name: строка, имя организации (опционально)
57
- abnormal_event_objects: список объектов с аномалиями
58
- other_critical: список иных критических уведомлений (опционально)
59
- Возвращает: InternalApiResponse[ApiOrganizationSendCriticalEventsEmailResponse]
60
- """
61
- data = {
62
- "organization_name": organization_name,
63
- "abnormal_event_objects": abnormal_event_objects,
64
- }
65
- if other_critical is not None:
66
- data["other_critical"] = other_critical
67
- return self._api.request_post(
68
- f"/organizations/{organization_id}/send-critical-events-email",
69
- json={
70
- "organization_name": organization_name,
71
- "abnormal_event_objects": abnormal_event_objects,
72
- "other_critical": other_critical,
73
- }
74
- ).typed(ApiOrganizationSendCriticalEventsEmailResponse).check()
53
+ def get_user_send_event_email_list(self, user_id: UUID) -> InternalApiResponse[ApiUserEventsToSendEmail]:
54
+ return self._api.request_get(f'/users/{user_id}/events_to_send_email').typed(ApiUserEventsToSendEmail).check()
55
+
56
+ @internal_api_error_handler
57
+ def get_organization_users_emails_by_events(self, organization_id: UUID, events: List[str]) -> InternalApiResponse[ApiOrganizationUserEmails]:
58
+ return self._api.request_get(
59
+ f'/organizations/{organization_id}/users/emails-by-events',
60
+ q={"events": events},
61
+ ).typed(ApiOrganizationUserEmails).check()
@@ -0,0 +1,62 @@
1
+ from enum import Enum
2
+ from typing import Any, Dict, List, Optional
3
+
4
+ from pytz import all_timezones
5
+ from ul_api_utils.api_resource.api_response import JsonApiResponsePayload
6
+ from ul_api_utils.api_resource.api_response_payload_alias import ApiBaseUserModelPayloadResponse
7
+ from pydantic import BaseModel, UUID4
8
+
9
+ from ul_api_utils.validators.custom_fields import PgTypeShortStrAnnotation
10
+ from pii_sdk.types.enums.organization_user_state import OrganizationUserState
11
+ from datetime import datetime
12
+
13
+
14
+
15
+ TimeZonesEnum = Enum('tz_type', {tz_name.lower().replace('/', '_'): tz_name for tz_name in all_timezones}) # type: ignore
16
+
17
+
18
+ class ApiOrganizationData(BaseModel):
19
+ admin_notes: Optional[str] = None
20
+ name: str
21
+ available_permissions: List[int]
22
+ timezones: List[TimeZonesEnum]
23
+
24
+
25
+ class ApiOrganization(ApiBaseUserModelPayloadResponse):
26
+ admin_notes: Optional[str] = None
27
+ organization_data: ApiOrganizationData
28
+ frontend_settings: Dict[str, Any]
29
+ teams_count: int
30
+ users_count: int
31
+
32
+ class ApiOrganizationAvailableEvents(JsonApiResponsePayload):
33
+ available_events: list[str]
34
+
35
+
36
+ class ApiUserListResponse(JsonApiResponsePayload):
37
+ """Упрощенная модель ответа для списков пользователей организации"""
38
+
39
+ id: UUID4
40
+ date_created: datetime
41
+ date_modified: datetime
42
+ is_alive: bool
43
+
44
+ # Основная информация о пользователе
45
+ is_superuser: bool
46
+
47
+ # Данные пользователя (только основные поля)
48
+ email: PgTypeShortStrAnnotation
49
+ first_name: Optional[PgTypeShortStrAnnotation] = None
50
+ last_name: Optional[PgTypeShortStrAnnotation] = None
51
+ nick_name: Optional[PgTypeShortStrAnnotation] = None
52
+
53
+ # Статус в организации
54
+ organization_user_state: OrganizationUserState
55
+ organization_user_notes: Optional[str] = None
56
+
57
+ # Количество команд пользователя в организации
58
+ teams_count: int = 0
59
+
60
+
61
+ class ApiOrganizationUserEmails(JsonApiResponsePayload):
62
+ emails: list[str]
@@ -0,0 +1,5 @@
1
+ from ul_api_utils.api_resource.api_response import JsonApiResponsePayload
2
+
3
+
4
+ class ApiUserEventsToSendEmail(JsonApiResponsePayload):
5
+ events_to_send_email: list[str]
@@ -0,0 +1,6 @@
1
+ from enum import Enum
2
+
3
+
4
+ class OrganizationUserState(Enum):
5
+ active = "ACTIVE"
6
+ blocked = "BLOCKED"
File without changes
@@ -9,7 +9,7 @@ with open(path.join(HERE, 'README.md'), encoding='utf-8') as f:
9
9
 
10
10
  setup(
11
11
  name='ul_pii_sdk',
12
- version='4.2.2',
12
+ version='4.2.5',
13
13
  description='Pii sdk',
14
14
  author='Unic-lab',
15
15
  long_description=long_description,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ul-pii-sdk
3
- Version: 4.2.2
3
+ Version: 4.2.5
4
4
  Summary: Pii sdk
5
5
  Author: Unic-lab
6
6
  License: MIT
@@ -8,6 +8,9 @@ pii_sdk/pii_sdk_config.py
8
8
  pii_sdk/py.typed
9
9
  pii_sdk/types/__init__.py
10
10
  pii_sdk/types/api_ogranization.py
11
+ pii_sdk/types/api_user.py
12
+ pii_sdk/types/enums/__init__.py
13
+ pii_sdk/types/enums/organization_user_state.py
11
14
  pii_sdk/utils/__init__.py
12
15
  pii_sdk/utils/internal_api_error_handler.py
13
16
  ul_pii_sdk.egg-info/PKG-INFO
@@ -1,38 +0,0 @@
1
- from enum import Enum
2
- from typing import Any, Dict, List, Optional
3
-
4
- from pytz import all_timezones
5
- from ul_api_utils.api_resource.api_response import JsonApiResponsePayload
6
- from ul_api_utils.api_resource.api_response_payload_alias import ApiBaseUserModelPayloadResponse
7
- from pydantic import BaseModel
8
-
9
-
10
- TimeZonesEnum = Enum('tz_type', {tz_name.lower().replace('/', '_'): tz_name for tz_name in all_timezones}) # type: ignore
11
-
12
-
13
- class ApiOrganizationData(BaseModel):
14
- admin_notes: Optional[str] = None
15
- name: str
16
- available_permissions: List[int]
17
- timezones: List[TimeZonesEnum]
18
-
19
-
20
- class ApiOrganization(ApiBaseUserModelPayloadResponse):
21
- admin_notes: Optional[str] = None
22
- organization_data: ApiOrganizationData
23
- frontend_settings: Dict[str, Any]
24
- teams_count: int
25
- users_count: int
26
-
27
- class ApiOrganizationAvailableEvents(JsonApiResponsePayload):
28
- available_events: list[str]
29
-
30
-
31
- class ApiOrganizationSendCriticalEventsEmailResponse(JsonApiResponsePayload):
32
- sent: int
33
-
34
-
35
- class ApiOrganizationSendCriticalEventsEmail(BaseModel):
36
- organization_name: str
37
- abnormal_event_objects: list[str]
38
- other_critical: list[str] | None = None
File without changes
File without changes
File without changes
File without changes