django-activity-audit 1.3.0.dev17__tar.gz → 1.3.0.dev18__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.
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/PKG-INFO +1 -1
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/constants.py +0 -1
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/formatters.py +16 -3
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/handlers.py +1 -1
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/signals.py +5 -6
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/utils.py +4 -7
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/pyproject.toml +1 -1
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/.gitignore +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/.pre-commit-config.yaml +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/LICENSE +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/MANIFEST.in +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/README.md +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/README.rst +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/__init__.py +3 -3
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/apps.py +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/logger_levels.py +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/middleware.py +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/protocols.py +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/settings.py +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/unregistered.py +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/docs/django-activity-audit.md +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/docs/improvements.md +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/docs/user-activity-feed-plan.md +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/hatch +0 -0
- {django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/pytest.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-activity-audit
|
|
3
|
-
Version: 1.3.0.
|
|
3
|
+
Version: 1.3.0.dev18
|
|
4
4
|
Summary: A Django package for easy CRUD operation logging and container logs
|
|
5
5
|
Project-URL: Homepage, https://github.com/shree256/django-activity-audit
|
|
6
6
|
Project-URL: Repository, https://github.com/shree256/django-activity-audit
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/formatters.py
RENAMED
|
@@ -7,6 +7,7 @@ import uuid
|
|
|
7
7
|
from .constants import LogType
|
|
8
8
|
from .middleware import get_request_id
|
|
9
9
|
|
|
10
|
+
|
|
10
11
|
def _json_default(obj):
|
|
11
12
|
"""
|
|
12
13
|
Serializer for non-JSON-native types.
|
|
@@ -32,7 +33,11 @@ def _json_default(obj):
|
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
class AppFormatter(logging.Formatter):
|
|
35
|
-
def __init__(
|
|
36
|
+
def __init__(
|
|
37
|
+
self,
|
|
38
|
+
log_type: str = LogType.APP,
|
|
39
|
+
timestamp_format: str = "%Y-%m-%d %H:%M:%S.%f",
|
|
40
|
+
):
|
|
36
41
|
super().__init__()
|
|
37
42
|
self.log_type = log_type
|
|
38
43
|
self.timestamp_format = timestamp_format
|
|
@@ -66,7 +71,11 @@ class AppFormatter(logging.Formatter):
|
|
|
66
71
|
class APIFormatter(logging.Formatter):
|
|
67
72
|
"""Custom formatter for audit logs that ensures consistent JSON formatting."""
|
|
68
73
|
|
|
69
|
-
def __init__(
|
|
74
|
+
def __init__(
|
|
75
|
+
self,
|
|
76
|
+
log_type: str = LogType.API,
|
|
77
|
+
timestamp_format: str = "%Y-%m-%d %H:%M:%S.%f",
|
|
78
|
+
):
|
|
70
79
|
super().__init__()
|
|
71
80
|
self.log_type = log_type
|
|
72
81
|
self.timestamp_format = timestamp_format
|
|
@@ -103,7 +112,11 @@ class APIFormatter(logging.Formatter):
|
|
|
103
112
|
|
|
104
113
|
|
|
105
114
|
class AuditFormatter(logging.Formatter):
|
|
106
|
-
def __init__(
|
|
115
|
+
def __init__(
|
|
116
|
+
self,
|
|
117
|
+
log_type: str = LogType.AUDIT,
|
|
118
|
+
timestamp_format: str = "%Y-%m-%d %H:%M:%S.%f",
|
|
119
|
+
):
|
|
107
120
|
super().__init__()
|
|
108
121
|
self.log_type = log_type
|
|
109
122
|
self.timestamp_format = timestamp_format
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/handlers.py
RENAMED
|
@@ -3,7 +3,7 @@ import queue
|
|
|
3
3
|
|
|
4
4
|
from logging.handlers import QueueHandler, QueueListener, RotatingFileHandler
|
|
5
5
|
|
|
6
|
-
from .formatters import APIFormatter,
|
|
6
|
+
from .formatters import APIFormatter, AppFormatter, AuditFormatter, LoginFormatter
|
|
7
7
|
from .middleware import get_request_id
|
|
8
8
|
|
|
9
9
|
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/signals.py
RENAMED
|
@@ -256,23 +256,22 @@ def patch_model_event(model_class: type[models.Model]) -> None:
|
|
|
256
256
|
instance: models.Model,
|
|
257
257
|
action: str,
|
|
258
258
|
pk_set: set,
|
|
259
|
+
_field_name: str = field.name,
|
|
259
260
|
**kwargs: Any,
|
|
260
261
|
) -> None:
|
|
261
262
|
if action not in ["post_add", "post_remove", "post_clear"]:
|
|
262
263
|
return
|
|
263
264
|
|
|
264
|
-
field_name = kwargs.get("model", sender).__name__.lower()
|
|
265
|
-
instance_repr = instance_to_dict(instance)
|
|
266
|
-
|
|
267
265
|
push_log(
|
|
268
266
|
f"M2M {action} event by {model_class.__name__} (id: {instance.pk})",
|
|
269
267
|
model_class.__name__,
|
|
270
268
|
EVENT_TYPES[5],
|
|
271
269
|
str(instance.pk),
|
|
272
|
-
|
|
270
|
+
{"id": str(instance.pk)},
|
|
273
271
|
{
|
|
274
|
-
"
|
|
275
|
-
"
|
|
272
|
+
"action": action,
|
|
273
|
+
"field_name": _field_name,
|
|
274
|
+
"related_ids": list(map(str, pk_set)) if pk_set else [],
|
|
276
275
|
},
|
|
277
276
|
)
|
|
278
277
|
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/utils.py
RENAMED
|
@@ -13,15 +13,13 @@ def get_app_formatter(log_type: str = "app") -> dict:
|
|
|
13
13
|
"log_type": log_type,
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
|
|
16
17
|
def get_api_formatter() -> dict:
|
|
17
|
-
return {
|
|
18
|
-
|
|
19
|
-
}
|
|
18
|
+
return {"()": "activity_audit.formatters.APIFormatter"}
|
|
19
|
+
|
|
20
20
|
|
|
21
21
|
def get_audit_formatter() -> dict:
|
|
22
|
-
return {
|
|
23
|
-
"()": "activity_audit.formatters.AuditFormatter"
|
|
24
|
-
}
|
|
22
|
+
return {"()": "activity_audit.formatters.AuditFormatter"}
|
|
25
23
|
|
|
26
24
|
|
|
27
25
|
def get_json_handler(
|
|
@@ -41,7 +39,6 @@ def get_json_handler(
|
|
|
41
39
|
}
|
|
42
40
|
|
|
43
41
|
|
|
44
|
-
|
|
45
42
|
def get_api_handler(
|
|
46
43
|
filename: str = "audit_logs/api.log",
|
|
47
44
|
) -> dict:
|
|
File without changes
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/.pre-commit-config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/__init__.py
RENAMED
|
@@ -2,16 +2,16 @@ default_app_config = "activity_audit.apps.AuditLoggingConfig"
|
|
|
2
2
|
|
|
3
3
|
from activity_audit.constants import LogType
|
|
4
4
|
from activity_audit.utils import (
|
|
5
|
+
get_api_formatter,
|
|
5
6
|
get_api_handler,
|
|
7
|
+
get_app_formatter,
|
|
6
8
|
get_async_api_handler,
|
|
7
9
|
get_async_audit_handler,
|
|
8
10
|
get_async_json_handler,
|
|
9
11
|
get_async_login_handler,
|
|
12
|
+
get_audit_formatter,
|
|
10
13
|
get_audit_handler,
|
|
11
14
|
get_console_formatter,
|
|
12
|
-
get_app_formatter,
|
|
13
|
-
get_api_formatter,
|
|
14
|
-
get_audit_formatter,
|
|
15
15
|
get_json_handler,
|
|
16
16
|
get_login_handler,
|
|
17
17
|
)
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/apps.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/middleware.py
RENAMED
|
File without changes
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/protocols.py
RENAMED
|
File without changes
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/activity_audit/settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_activity_audit-1.3.0.dev17 → django_activity_audit-1.3.0.dev18}/docs/improvements.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|