A reusable Django Model that allows you to storeregistre actions log of models.
Project description
django-modelwithlog
-------------------
django-modelwithlog is a reusable Django Abstract Model that make automatic history log of your model.
The History of all model will write in a Model RegisterLog compose of:
action_time:
date and time of ocurrency
content_type:
The ContentType of the concrect Model
data_user:
A JSON of user and acess data loged on ocurrency
modifications:
A JSON with a data of model modificate
object_pk:
The primary key of model
object_repr:
The representation of model
action_flag:
The action of ocurrency (ADDITION, CHANGE or DELETION)
change_message:
The message of ocurrency of human read
Setup/Usage
===========
.. code-block:: shell
pip install django-modelwithlog
or
.. code-block:: shell
pip install git+https://github.com/bispogeomk/django-modelwithlog
Add `threadlocals.middleware.ThreadLocalMiddleware` to your `MIDDLEWARE_CLASSES` setting.
Add 'log_models' to your 'SETTINGS.INSTALLED_APPS'.
Inherit your model from 'ModelWithLog' to make it auto logged:
.. code-block:: python
from django.db import models
from log_models import ModelWithLog
class MyModel(ModelWithLog):
name = models.CharField(max_length=80)
age = models.PositiveSmallIntegerField()
Advanced Usage
--------------
.. code-block:: python
from django.db import models
from log_models.models import ModelWithLog
from log_models.models import RegisterLog
from django.contrib.contenttypes.models import ContentType
class Player(ModelWithLog):
name = models.CharField(max_length=80)
age = models.PositiveSmallIntegerField()
def make_log_message(self):
self.full_clean()
if self.__action_flag__ == 1:
return f"A new Player nome {self.nome} with age {self.age}."
elif self.__action_flag__ == 3:
return f"Player {self.nome} is gone."
else:
return f"The Player change for {self.nome} and age {self.age}."
def get_logs(self):
return RegisterLog.objects.filter(content_type=ContentType(Player), object_pk=self.pk)
Compatibility
--------------
django-modelwithlog aims to support the same versions of Django currently maintained by the main Django project. See `Django supported versions`_, currently:
* Django 1.10 with Python 3.5
* Django 1.11 (LTS) with Python 3.5 or 3.6
Testing django-modelwithlog Locally
--------------------------------
To test against all supported versions of Django:
.. code-block:: shell
$ python setup.py test
Contact
-------
Web: http://www.snaketi.com.br
Twitter: `@moacirbispo`_
Email: `bispo@geomk.com.br`_
.. _bispo@geomk.com.br: mailto:bispo@geomk.com.br
.. _@moacirbispo: https://twitter.com/moacirbispo
Changes
-------
Take a look at the `changelog`_.
.. _changelog: https://github.com/bispogeomk/django-modelwithlog/blob/master/CHANGES.rst
-------------------
django-modelwithlog is a reusable Django Abstract Model that make automatic history log of your model.
The History of all model will write in a Model RegisterLog compose of:
action_time:
date and time of ocurrency
content_type:
The ContentType of the concrect Model
data_user:
A JSON of user and acess data loged on ocurrency
modifications:
A JSON with a data of model modificate
object_pk:
The primary key of model
object_repr:
The representation of model
action_flag:
The action of ocurrency (ADDITION, CHANGE or DELETION)
change_message:
The message of ocurrency of human read
Setup/Usage
===========
.. code-block:: shell
pip install django-modelwithlog
or
.. code-block:: shell
pip install git+https://github.com/bispogeomk/django-modelwithlog
Add `threadlocals.middleware.ThreadLocalMiddleware` to your `MIDDLEWARE_CLASSES` setting.
Add 'log_models' to your 'SETTINGS.INSTALLED_APPS'.
Inherit your model from 'ModelWithLog' to make it auto logged:
.. code-block:: python
from django.db import models
from log_models import ModelWithLog
class MyModel(ModelWithLog):
name = models.CharField(max_length=80)
age = models.PositiveSmallIntegerField()
Advanced Usage
--------------
.. code-block:: python
from django.db import models
from log_models.models import ModelWithLog
from log_models.models import RegisterLog
from django.contrib.contenttypes.models import ContentType
class Player(ModelWithLog):
name = models.CharField(max_length=80)
age = models.PositiveSmallIntegerField()
def make_log_message(self):
self.full_clean()
if self.__action_flag__ == 1:
return f"A new Player nome {self.nome} with age {self.age}."
elif self.__action_flag__ == 3:
return f"Player {self.nome} is gone."
else:
return f"The Player change for {self.nome} and age {self.age}."
def get_logs(self):
return RegisterLog.objects.filter(content_type=ContentType(Player), object_pk=self.pk)
Compatibility
--------------
django-modelwithlog aims to support the same versions of Django currently maintained by the main Django project. See `Django supported versions`_, currently:
* Django 1.10 with Python 3.5
* Django 1.11 (LTS) with Python 3.5 or 3.6
Testing django-modelwithlog Locally
--------------------------------
To test against all supported versions of Django:
.. code-block:: shell
$ python setup.py test
Contact
-------
Web: http://www.snaketi.com.br
Twitter: `@moacirbispo`_
Email: `bispo@geomk.com.br`_
.. _bispo@geomk.com.br: mailto:bispo@geomk.com.br
.. _@moacirbispo: https://twitter.com/moacirbispo
Changes
-------
Take a look at the `changelog`_.
.. _changelog: https://github.com/bispogeomk/django-modelwithlog/blob/master/CHANGES.rst
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
File details
Details for the file django-modelwithlog-1.0.1.tar.gz
.
File metadata
- Download URL: django-modelwithlog-1.0.1.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a011931592b93afe68df29fdfc9ebc64b06b05faacf9324a3e570e3e7adb1a4b |
|
MD5 | e5a29d667abfc60ed6e4fa052c844d7c |
|
BLAKE2b-256 | 421e3a0d37162dbeb3af603df009d2721a146d064e0c2a19cf6aeae6758d8125 |