sharedkernel 2.2.0__tar.gz → 2.2.2__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 (37) hide show
  1. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/PKG-INFO +8 -2
  2. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/README.md +5 -0
  3. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/setup.py +3 -3
  4. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/database/mongo_generic_audit_repository.py +40 -0
  5. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/database/mongo_generic_repository.py +18 -17
  6. sharedkernel-2.2.2/sharedkernel/enum/sort_order.py +6 -0
  7. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel.egg-info/PKG-INFO +8 -2
  8. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel.egg-info/SOURCES.txt +1 -0
  9. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel.egg-info/requires.txt +2 -1
  10. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/setup.cfg +0 -0
  11. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/common.py +0 -0
  12. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/data_format_converter.py +0 -0
  13. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/database/__init__.py +0 -0
  14. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/database/audit_model.py +0 -0
  15. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/date_converter.py +0 -0
  16. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/diff_utils.py +0 -0
  17. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/enum/__init__.py +0 -0
  18. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/enum/error_code.py +0 -0
  19. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/exception/__init__.py +0 -0
  20. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/exception/exception.py +0 -0
  21. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/exception/exception_handlers.py +0 -0
  22. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/jwt_service.py +0 -0
  23. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/normalizer/__init__.py +0 -0
  24. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/normalizer/number_normalizer.py +0 -0
  25. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/normalizer/phone_number_normalizer.py +0 -0
  26. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/normalizer/string_normalizer.py +0 -0
  27. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/objects/__init__.py +0 -0
  28. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/objects/base_document.py +0 -0
  29. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/objects/json_string_model.py +0 -0
  30. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/objects/jwt_model.py +0 -0
  31. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/objects/result.py +0 -0
  32. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/objects/user_info.py +0 -0
  33. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/regex_masking.py +0 -0
  34. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/s3_uploader.py +0 -0
  35. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel/string_extentions.py +0 -0
  36. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/sharedkernel.egg-info/dependency_links.txt +0 -0
  37. {sharedkernel-2.2.0 → sharedkernel-2.2.2}/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.2.0
3
+ Version: 2.2.2
4
4
  Summary: sharekernel is a shared package between all python projects
5
5
  Author: Smilinno
6
6
  Description-Content-Type: text/markdown
@@ -17,7 +17,8 @@ Requires-Dist: boto3==1.35.90
17
17
  Requires-Dist: python-docx
18
18
  Requires-Dist: mammoth
19
19
  Requires-Dist: markdown
20
- Requires-Dist: beautifulsoup4deepdiff
20
+ Requires-Dist: beautifulsoup4
21
+ Requires-Dist: deepdiff
21
22
  Dynamic: author
22
23
  Dynamic: description
23
24
  Dynamic: description-content-type
@@ -28,6 +29,11 @@ Dynamic: summary
28
29
  this is a shared kernel package
29
30
 
30
31
  # Change Log
32
+ ### Version 2.2.2
33
+ - update on audit logging queries
34
+ - added is_audit to update_one parameters
35
+ ### Version 2.2.1
36
+ - fixbug requirements
31
37
  ### Version 2.2.0
32
38
  - implement Audit logging
33
39
  ### Version 2.1.2
@@ -2,6 +2,11 @@
2
2
  this is a shared kernel package
3
3
 
4
4
  # Change Log
5
+ ### Version 2.2.2
6
+ - update on audit logging queries
7
+ - added is_audit to update_one parameters
8
+ ### Version 2.2.1
9
+ - fixbug requirements
5
10
  ### Version 2.2.0
6
11
  - implement Audit logging
7
12
  ### Version 2.1.2
@@ -33,11 +33,11 @@ setup(
33
33
  "python-docx",
34
34
  "mammoth",
35
35
  "markdown",
36
- "beautifulsoup4"
37
- "deepdiff"
36
+ "beautifulsoup4",
37
+ "deepdiff",
38
38
  ],
39
39
  # *strongly* suggested for sharing
40
- version="2.2.0",
40
+ version="2.2.2",
41
41
  description="sharekernel is a shared package between all python projects",
42
42
  long_description=long_description,
43
43
  long_description_content_type="text/markdown",
@@ -4,6 +4,7 @@ from pymongo import MongoClient
4
4
  from pydantic.v1 import BaseModel
5
5
 
6
6
  from sharedkernel.database.audit_model import AuditLog
7
+ from sharedkernel.enum.sort_order import SortOrder
7
8
 
8
9
  T = TypeVar("T", bound=BaseModel)
9
10
 
@@ -35,7 +36,13 @@ class MongoGenericAuditRepository():
35
36
  operation: str | None = None,
36
37
  collection_name: str | None = None,
37
38
  field_name: str | None = None,
39
+ page_number=1,
40
+ page_size=10,
41
+ sort_order: SortOrder = SortOrder.Descending,
38
42
  ) -> List[AuditLog]:
43
+ sort_order = -1 if sort_order == SortOrder.Descending else 1
44
+
45
+ skip_count = (page_number - 1) * page_size
39
46
 
40
47
  query = {}
41
48
 
@@ -52,6 +59,39 @@ class MongoGenericAuditRepository():
52
59
  {f"modified.{field_name}": {"$exists": True}},
53
60
  ]
54
61
 
62
+ results = self.collection.find(query).sort("_id", sort_order).skip(skip_count).limit(page_size)
63
+ return [self._map_to_model(bot) for bot in results]
64
+
65
+ def find_by_value(
66
+ self,
67
+ field_name: str,
68
+ field_value: str,
69
+ document_id: str | None = None,
70
+ operation: str | None = None,
71
+ collection_name: str | None = None,
72
+ find_in_originals: bool | None = False,
73
+ find_in_modifies: bool | None = False,
74
+ ) -> list[AuditLog]:
75
+
76
+ query = {}
77
+
78
+ if document_id:
79
+ query["document_id"] = document_id
80
+ if operation:
81
+ query["operation"] = operation
82
+ if collection_name:
83
+ query["collection_name"] = collection_name
84
+
85
+ if find_in_originals and find_in_modifies:
86
+ query["$or"] = [
87
+ {f"original.{field_name}": field_value},
88
+ {f"modified.{field_name}": field_value},
89
+ ]
90
+ elif find_in_originals:
91
+ query[f"original.{field_name}"] = field_value
92
+ elif find_in_modifies:
93
+ query[f"modified.{field_name}"] = field_value
94
+
55
95
  results = self.collection.find(query)
56
96
  return [self._map_to_model(bot) for bot in results]
57
97
 
@@ -79,7 +79,7 @@ class MongoGenericRepository(Generic[T]):
79
79
 
80
80
  return [str(id_) for id_ in result.inserted_ids]
81
81
 
82
- def update_one(self, id: str, data: T) -> int:
82
+ def update_one(self, id: str, data: T, is_audit = True) -> int:
83
83
  delattr(data, "id")
84
84
 
85
85
  query = {"_id": ObjectId(id)}
@@ -89,24 +89,25 @@ class MongoGenericRepository(Generic[T]):
89
89
  return_document=ReturnDocument.BEFORE
90
90
  )
91
91
 
92
- before_model = self.model(**before_dict)
93
-
94
92
  # For Audit log
95
- with suppress(Exception):
96
- diff_data = generate_clean_diff(before_model, data)
97
- old_data, new_data = diff_data["original"], diff_data["modified"]
98
-
99
- if isinstance(data, BaseAuditDocument) and new_data:
100
- document = AuditLog(
101
- user_id=current_user_info.get().nameid,
102
- collection_name=self.__collection_name,
103
- document_id=id,
104
- operation=AuditOperation.UPDATE,
105
- original=old_data,
106
- modified=new_data,
107
- )
93
+ if isinstance(data, BaseAuditDocument) and is_audit:
94
+ with suppress(Exception):
95
+ before_model = self.model(**before_dict)
108
96
 
109
- self.audit_collection.insert_one(document)
97
+ diff_data = generate_clean_diff(before_model, data)
98
+ old_data, new_data = diff_data["original"], diff_data["modified"]
99
+
100
+ if new_data:
101
+ document = AuditLog(
102
+ user_id=current_user_info.get().nameid,
103
+ collection_name=self.__collection_name,
104
+ document_id=id,
105
+ operation=AuditOperation.UPDATE,
106
+ original=old_data,
107
+ modified=new_data,
108
+ )
109
+
110
+ self.audit_collection.insert_one(document)
110
111
 
111
112
  return 1
112
113
 
@@ -0,0 +1,6 @@
1
+ from enum import Enum
2
+
3
+
4
+ class SortOrder(str, Enum):
5
+ Descending = "desc"
6
+ Ascending = "asc"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sharedkernel
3
- Version: 2.2.0
3
+ Version: 2.2.2
4
4
  Summary: sharekernel is a shared package between all python projects
5
5
  Author: Smilinno
6
6
  Description-Content-Type: text/markdown
@@ -17,7 +17,8 @@ Requires-Dist: boto3==1.35.90
17
17
  Requires-Dist: python-docx
18
18
  Requires-Dist: mammoth
19
19
  Requires-Dist: markdown
20
- Requires-Dist: beautifulsoup4deepdiff
20
+ Requires-Dist: beautifulsoup4
21
+ Requires-Dist: deepdiff
21
22
  Dynamic: author
22
23
  Dynamic: description
23
24
  Dynamic: description-content-type
@@ -28,6 +29,11 @@ Dynamic: summary
28
29
  this is a shared kernel package
29
30
 
30
31
  # Change Log
32
+ ### Version 2.2.2
33
+ - update on audit logging queries
34
+ - added is_audit to update_one parameters
35
+ ### Version 2.2.1
36
+ - fixbug requirements
31
37
  ### Version 2.2.0
32
38
  - implement Audit logging
33
39
  ### Version 2.1.2
@@ -19,6 +19,7 @@ sharedkernel/database/mongo_generic_audit_repository.py
19
19
  sharedkernel/database/mongo_generic_repository.py
20
20
  sharedkernel/enum/__init__.py
21
21
  sharedkernel/enum/error_code.py
22
+ sharedkernel/enum/sort_order.py
22
23
  sharedkernel/exception/__init__.py
23
24
  sharedkernel/exception/exception.py
24
25
  sharedkernel/exception/exception_handlers.py
@@ -11,4 +11,5 @@ boto3==1.35.90
11
11
  python-docx
12
12
  mammoth
13
13
  markdown
14
- beautifulsoup4deepdiff
14
+ beautifulsoup4
15
+ deepdiff
File without changes