Advanced usage¶
Manual logging¶
If you need to log something manually:
from simple_log.models import SimpleLog
SimpleLog.log(
instance=obj,
action_flag=SimpleLog.CHANGE,
change_message='Some message'
)
Pass params to log¶
Add simple_log_params
to instance:
class SomeView(FormView):
...
def form_valid(self, form):
form.instance.simple_log_params = {
'user': None,
'user_repr': 'GLaDOS',
'change_message': 'Cake is a lie'
}
return super().form_valid(form)
Custom serializer¶
# Serializer for concrete model
class MyModel:
...
simple_log_model_serializer = 'app_label.ModelName'
# Default serializer in settings
SIMPLE_LOG_MODEL_SERIALIZER = 'app_label.ModelName'
Custom log model¶
from simple_log.models import SimpleLogAbstractBase
from django.db import models
from django.utils.translation import ugettext_lazy as _
class ChangeLog(SimpleLogAbstractBase):
# custom action_flag
ERROR = 4
ACTION_CHOICES = SimpleLogAbstractBase.ACTION_CHOICES + (
(ERROR, 'error'),
)
action_flag = models.PositiveSmallIntegerField(
_('action flag'),
choices=ACTION_CHOICES,
default=SimpleLogAbstractBase.CHANGE
)
# custom field
user_is_staff = models.BooleanField(default=False)
@classmethod
def get_log_params(cls, instance, **kwargs):
params = super(ChangeLog, cls).get_log_params(instance, **kwargs)
user = params['user']
if user:
params['user_is_staff'] = user.is_staff
return params
# in settings
SIMPLE_LOG_MODEL = 'app_label.ChangeLog'