sharedkernel 2.9.1__tar.gz → 2.9.3__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 (65) hide show
  1. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/PKG-INFO +4 -2
  2. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/README.md +3 -1
  3. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/setup.py +2 -1
  4. sharedkernel-2.9.3/sharedkernel/enum/user_role.py +16 -0
  5. sharedkernel-2.9.3/sharedkernel/objects/user_workspace.py +13 -0
  6. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/toolbox_service.py +18 -2
  7. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel.egg-info/PKG-INFO +4 -2
  8. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel.egg-info/SOURCES.txt +3 -1
  9. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/setup.cfg +0 -0
  10. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/chunker/chunk_rule.py +0 -0
  11. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/chunker/text_chunker.py +0 -0
  12. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/common.py +0 -0
  13. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/config.py +0 -0
  14. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/data_format_converter.py +0 -0
  15. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/__init__.py +0 -0
  16. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/audit_model.py +0 -0
  17. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/cache/__init__.py +0 -0
  18. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/cache/cache_repository.py +0 -0
  19. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/cache/redis_generic_cache.py +0 -0
  20. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/distributed_cache.py +0 -0
  21. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/mongo_generic_audit_repository.py +0 -0
  22. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/mongo_generic_repository.py +0 -0
  23. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/mongo_health_checker.py +0 -0
  24. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/database/pagination_response_dto.py +0 -0
  25. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/date_converter.py +0 -0
  26. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/diff_utils.py +0 -0
  27. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/enum/__init__.py +0 -0
  28. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/enum/error_code.py +0 -0
  29. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/enum/feature_display_type.py +0 -0
  30. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/enum/feature_key.py +0 -0
  31. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/enum/order_type.py +0 -0
  32. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/enum/plan_interval.py +0 -0
  33. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/enum/plan_type.py +0 -0
  34. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/enum/redis_mode_enum.py +0 -0
  35. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/enum/sort_order.py +0 -0
  36. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/exception/__init__.py +0 -0
  37. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/exception/exception.py +0 -0
  38. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/exception/exception_handlers.py +0 -0
  39. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/file_validation.py +0 -0
  40. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/ip_session_service.py +0 -0
  41. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/jwt_service.py +0 -0
  42. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/logger/log_decorator.py +0 -0
  43. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/logger/log_dto.py +0 -0
  44. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/logger/log_enums.py +0 -0
  45. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/logger/log_info.py +0 -0
  46. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/logger/log_middlewares.py +0 -0
  47. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/logger/logger_service.py +0 -0
  48. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/multipart_upload.py +0 -0
  49. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/normalizer/__init__.py +0 -0
  50. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/normalizer/number_normalizer.py +0 -0
  51. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/normalizer/phone_number_normalizer.py +0 -0
  52. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/normalizer/string_normalizer.py +0 -0
  53. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/objects/__init__.py +0 -0
  54. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/objects/base_document.py +0 -0
  55. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/objects/json_string_model.py +0 -0
  56. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/objects/jwt_model.py +0 -0
  57. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/objects/result.py +0 -0
  58. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/objects/subscription.py +0 -0
  59. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/objects/user_info.py +0 -0
  60. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/regex_masking.py +0 -0
  61. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/s3_uploader.py +0 -0
  62. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel/string_extentions.py +0 -0
  63. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel.egg-info/dependency_links.txt +0 -0
  64. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel.egg-info/requires.txt +0 -0
  65. {sharedkernel-2.9.1 → sharedkernel-2.9.3}/sharedkernel.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sharedkernel
3
- Version: 2.9.1
3
+ Version: 2.9.3
4
4
  Summary: sharekernel is a shared package between all python projects
5
5
  Author: Smilinno
6
6
  Description-Content-Type: text/markdown
@@ -32,8 +32,10 @@ Dynamic: summary
32
32
  this is a shared kernel package
33
33
 
34
34
  # Change Log
35
+ ### Version 2.9.3
36
+ - add token to user info
35
37
  ### Version 2.9.1
36
- - Add token to user info
38
+ - add check_access_level to toolbox
37
39
  ### Version 2.9.0
38
40
  - Add toolbox_service
39
41
  ### Version 2.8.0
@@ -2,8 +2,10 @@
2
2
  this is a shared kernel package
3
3
 
4
4
  # Change Log
5
+ ### Version 2.9.3
6
+ - add token to user info
5
7
  ### Version 2.9.1
6
- - Add token to user info
8
+ - add check_access_level to toolbox
7
9
  ### Version 2.9.0
8
10
  - Add toolbox_service
9
11
  ### Version 2.8.0
@@ -20,6 +20,7 @@ setup(
20
20
  "sharedkernel.normalizer",
21
21
  "sharedkernel.logger",
22
22
  "sharedkernel.chunker",
23
+
23
24
  ],
24
25
  # Needed for dependencies
25
26
  install_requires=[
@@ -43,7 +44,7 @@ setup(
43
44
  "aiohttp",
44
45
  ],
45
46
  # *strongly* suggested for sharing
46
- version="2.9.1",
47
+ version="2.9.3",
47
48
  description="sharekernel is a shared package between all python projects",
48
49
  long_description=long_description,
49
50
  long_description_content_type="text/markdown",
@@ -0,0 +1,16 @@
1
+ from enum import Enum
2
+
3
+
4
+ class Role(str, Enum):
5
+ ADMIN = "admin"
6
+ MANAGER = "manager"
7
+ EDITOR = "editor"
8
+ VIEWER = "viewer"
9
+ OPERATOR = "operator"
10
+
11
+ class RoleFa(str, Enum):
12
+ ADMIN = "ادمین"
13
+ MANAGER = "مدیر"
14
+ EDITOR = "ویرایشگر"
15
+ VIEWER = "بیننده"
16
+ OPERATOR = "اپراتور"
@@ -0,0 +1,13 @@
1
+ from sharedkernel.objects.base_document import BaseDocument
2
+ from pydantic import BaseModel, RootModel
3
+ from sharedkernel.enum.user_role import Role
4
+
5
+
6
+ class UserWorkspace(BaseDocument):
7
+ user_id: str
8
+ workspace_id: str | None = None
9
+ is_owner: bool | None = None
10
+ role: Role = Role.ADMIN
11
+
12
+ class UserWorkspaces(RootModel[list[UserWorkspace]]):
13
+ pass
@@ -1,16 +1,21 @@
1
1
  from typing import Type
2
2
  from pydantic import BaseModel
3
3
  import aiohttp
4
+ from typing import List
4
5
 
5
6
  from sharedkernel.objects.result import Result
6
7
  from sharedkernel.enum import FeatureKey, PlanType
7
8
  from sharedkernel.enum import ErrorCode
8
9
  from sharedkernel.objects.subscription import Subscription
10
+ from sharedkernel.objects.user_workspace import UserWorkspace
9
11
  from sharedkernel.exception.exception import BusinessException
12
+ from sharedkernel.database.cache.cache_repository import CacheRepository
13
+ from sharedkernel.enum.user_role import Role
14
+ from sharedkernel.objects.user_info import current_user_info
10
15
 
11
16
 
12
17
  class ToolboxService:
13
- def __init__(self, cache):
18
+ def __init__(self, cache: CacheRepository | None = None):
14
19
  self.cache = cache
15
20
 
16
21
  async def send_request(
@@ -32,6 +37,10 @@ class ToolboxService:
32
37
  headers=headers,
33
38
  ) as response:
34
39
 
40
+ if not response.ok:
41
+ print(f"API Request to {endpoint} Failed: {response.status} {response.text}")
42
+ raise BusinessException(error_code=ErrorCode.Internal_Server)
43
+
35
44
  response_data = await response.json()
36
45
  return Result(
37
46
  **response_data,
@@ -67,4 +76,11 @@ class ToolboxService:
67
76
  if _feature.feature_key == feature:
68
77
  if _feature.remaining - quantity < 0:
69
78
  raise BusinessException(error_code=feature_errors[feature])
70
- break
79
+ break
80
+
81
+ def check_access_level(self, allowed_roles: List[Role], user_workspace: UserWorkspace):
82
+ if user_workspace is None:
83
+ raise BusinessException(ErrorCode.Workspace_Access_Denied)
84
+
85
+ if user_workspace.role not in allowed_roles and user_workspace.role != Role.ADMIN:
86
+ raise BusinessException(ErrorCode.User_Access_Denied)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sharedkernel
3
- Version: 2.9.1
3
+ Version: 2.9.3
4
4
  Summary: sharekernel is a shared package between all python projects
5
5
  Author: Smilinno
6
6
  Description-Content-Type: text/markdown
@@ -32,8 +32,10 @@ Dynamic: summary
32
32
  this is a shared kernel package
33
33
 
34
34
  # Change Log
35
+ ### Version 2.9.3
36
+ - add token to user info
35
37
  ### Version 2.9.1
36
- - Add token to user info
38
+ - add check_access_level to toolbox
37
39
  ### Version 2.9.0
38
40
  - Add toolbox_service
39
41
  ### Version 2.8.0
@@ -39,6 +39,7 @@ sharedkernel/enum/plan_interval.py
39
39
  sharedkernel/enum/plan_type.py
40
40
  sharedkernel/enum/redis_mode_enum.py
41
41
  sharedkernel/enum/sort_order.py
42
+ sharedkernel/enum/user_role.py
42
43
  sharedkernel/exception/__init__.py
43
44
  sharedkernel/exception/exception.py
44
45
  sharedkernel/exception/exception_handlers.py
@@ -58,4 +59,5 @@ sharedkernel/objects/json_string_model.py
58
59
  sharedkernel/objects/jwt_model.py
59
60
  sharedkernel/objects/result.py
60
61
  sharedkernel/objects/subscription.py
61
- sharedkernel/objects/user_info.py
62
+ sharedkernel/objects/user_info.py
63
+ sharedkernel/objects/user_workspace.py
File without changes