ul-pii-sdk 4.2.2__tar.gz → 4.2.4__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.
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/PKG-INFO +1 -1
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/pii_sdk/pii_sdk.py +10 -30
- ul_pii_sdk-4.2.4/pii_sdk/types/api_ogranization.py +58 -0
- ul_pii_sdk-4.2.4/pii_sdk/types/api_user.py +5 -0
- ul_pii_sdk-4.2.4/pii_sdk/types/enums/organization_user_state.py +6 -0
- ul_pii_sdk-4.2.4/pii_sdk/utils/__init__.py +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/setup.py +1 -1
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/ul_pii_sdk.egg-info/PKG-INFO +1 -1
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/ul_pii_sdk.egg-info/SOURCES.txt +3 -0
- ul_pii_sdk-4.2.2/pii_sdk/types/api_ogranization.py +0 -38
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/README.md +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/pii_sdk/__init__.py +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/pii_sdk/errors.py +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/pii_sdk/pii_sdk_config.py +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/pii_sdk/py.typed +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/pii_sdk/types/__init__.py +0 -0
- {ul_pii_sdk-4.2.2/pii_sdk/utils → ul_pii_sdk-4.2.4/pii_sdk/types/enums}/__init__.py +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/pii_sdk/utils/internal_api_error_handler.py +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/setup.cfg +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/ul_pii_sdk.egg-info/dependency_links.txt +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/ul_pii_sdk.egg-info/requires.txt +0 -0
- {ul_pii_sdk-4.2.2 → ul_pii_sdk-4.2.4}/ul_pii_sdk.egg-info/top_level.txt +0 -0
|
@@ -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
|
|
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
|
|
11
14
|
|
|
12
15
|
|
|
13
16
|
class PiiSdk:
|
|
@@ -41,34 +44,11 @@ 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
|
|
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()
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
|
File without changes
|
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|