mirror of https://github.com/jumpserver/jumpserver
43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
# ~*~ coding: utf-8 ~*~
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from audits.models import OperateLog
|
|
|
|
|
|
class OperateLogStore(object):
|
|
def __init__(self, config):
|
|
self.model = OperateLog
|
|
self.max_length = 1024
|
|
self.max_length_tip_msg = _(
|
|
'The text content is too long. Use Elasticsearch to store operation logs'
|
|
)
|
|
|
|
@staticmethod
|
|
def ping(timeout=None):
|
|
return True
|
|
|
|
def save(self, **kwargs):
|
|
before_limit, after_limit = None, None
|
|
log_id = kwargs.get('id', '')
|
|
before = kwargs.get('before') or {}
|
|
after = kwargs.get('after') or {}
|
|
if len(str(before)) > self.max_length:
|
|
before_limit = {str(_('Tips')): self.max_length_tip_msg}
|
|
if len(str(after)) > self.max_length:
|
|
after_limit = {str(_('Tips')): self.max_length_tip_msg}
|
|
|
|
op_log = self.model.objects.filter(pk=log_id).first()
|
|
if op_log is not None:
|
|
op_log_before = op_log.before or {}
|
|
op_log_after = op_log.after or {}
|
|
if not before_limit:
|
|
before.update(op_log_before)
|
|
if not after_limit:
|
|
after.update(op_log_after)
|
|
else:
|
|
op_log = self.model(**kwargs)
|
|
|
|
op_log.before = before_limit if before_limit else before
|
|
op_log.after = after_limit if after_limit else after
|
|
op_log.save()
|