A Django app to create server logs and users' notification.
Project description
AFEX Audit Trail
Installation
Install Dependencies
- Python 3.8
- Django 4.0
Install the package with pip and all the required libraries would be installed
pip install afex-audit-trail
Setting up...
Add 'audit-trails' to your installed apps:
INSTALLED_APPS = [
...
'audit_trails',
....
]
Run 'python manage.py migrate' to add the schema
python manage.py migrate
Generating Logs
To generate log for every request and response on the server, add the 'ActivityLoggingMiddleware' to your MIDDLEWARE list.
MIDDLEWARE = [
....
'audit_trails.middleware.ActivityLoggingMiddleware',
]
The log can be stored in either database or file, file being the default storage. Set the LOG_STORAGE variable in your settings.py file if you wish to use database for storage.
LOG_STORAGE = 'database'
Log file can be found in activity.log in the project directory
Generating Notifications
Notifications are generated manually by calling the appropriate method in your views or anywhere you'd like to generate notifications.
Notification has 4 levels namely; info, success, warning, error
. Each of the has a method for creating
notification with their respective level.
To generate notification anywhere in your code, import notify from signals and call the method that matches your notification level with the right attribute.
The right syntax is:
from audit_trails.signals import notify
notify.success(actor, recipients, action, action_object_type, action_object_id)
Add notification urls to your conf
For webview projects, include audit_trails.urls
and audit_trails.api.urls
for api, in your urlconf:
urlpatterns = [
...
path('notifications/', include('audit_trails.api.urls')),
...
]
Responses (View)
For api, '/notifications' returns a javascript object similar to the sample below:
{
"responseCode": 100,
"data": [
{
"id": 1,
"level": "success",
"description": "You modified John Doe's profile",
"timestamp": "2023-04-03T17:03:01.957252+01:00",
"timesince": "15 minutes",
"is_read": false
},
{
"id": 5,
"level": "success",
"description": "John created Mary Doe's profile",
"timestamp": "2023-03-03T10:05:18.361405+01:00",
"timesince": "1 month",
"is_read": false
}
],
"message": "Notification list retrieved successfully"
}
For webview, '/notifications' returns a html page with list of notifications
Arguments:
Required
- actor: A required object of a user instance
- recipients: A set of users to whom the notifications are sent
- action: A short description (preferably one or two word)
- action_object_type: Specifies the object type on whom the action was performed and it could be of nay type
- action_object_id: An integer of the action object id. together with the
action_object_type
. The actual object is gotten.
Others
- action_target_object_type: Specifies the object type to which the action was performed and it could be of nay type
- action_target_object_id: An integer of the action object id. together with the
action_target_object_type
. - detail: An optional string field for more information about the notification.
Extra Information
Other notification level methods are: notify.info(), notify.warning(), notify.error()
, with the same
arguments as notify.success()
Queryset Methods
Queryset methods were added to make querying and manipulations easier. Some of the methods are :
unread(), read(), mark_all_as_read(), mark_all_as_unread()
e.g user.notifications.mark_all_as_read()
would mark all notification as read for a particular user.
Model Methods and Properties
- timesince: Property returning the difference between the current date and the date the notification was created.
- description: Property returning string sentence of the actor, action and object of the notification
- mark_as_read(): toggles the
is_read
field of a notification object toTrue
- mark_as_unread(): toggles the
is_read
field of a notification object to ```False``
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file afex-audit-trail-0.2.6.tar.gz
.
File metadata
- Download URL: afex-audit-trail-0.2.6.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8fbcf47a1341866a5eddc17ad4b91a5d12786c2b7221b01a340bd68d83cca7e3 |
|
MD5 | e25b78f38fb12e9d7cd9c9c9283eaaac |
|
BLAKE2b-256 | 0d45b089a66fc93d393ca1641d177fa6b4176087c675996860feab19a1300469 |
File details
Details for the file afex_audit_trail-0.2.6-py3-none-any.whl
.
File metadata
- Download URL: afex_audit_trail-0.2.6-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ec9c23623e72d2c8ee5c58289f035b892a1e3438d755fada0a84be4e8c50ccd |
|
MD5 | e32dae722ea00cbd333aee97fea6d950 |
|
BLAKE2b-256 | 4280a1c9533356d54597e502232f3083eb8075a8f7616344fc7d5e0e38898d1c |