Состав модуля¶
Логгер действий пользователя в системе.
api¶
-
datalogging.api.
filter_events
(**kw)¶ Фильтрация по записям лолга.
Примечание
Не предусмотрена работа с NoSQL.
Если необходимо произвести фильтрацию по данным находящимся в в полях
context_data
илиobject_snapshot
. То необходимо использовать префиксы_context
и_snapshot
соответственно.filter_events( object_type='enterprise.Enterprise', system_type=SystemsEnum.MAIN_APPLICATION, _context__diff__name='Учреждение №666', _context__ent='455', )
-
datalogging.api.
get_events_by_token
(request_token)¶ Получение записей лога по их общему токену
-
datalogging.api.
get_request
()¶ Получение текущего запроса.
-
datalogging.api.
get_request_token
()¶ Получение токена текущего запроса.
-
datalogging.api.
get_user_ip
()¶ Получение IP текущего пользователя.
Return str or None: Если не удалось получить IP вернет None
app_meta¶
-
class
datalogging.app_meta.
InvaderLogPack
¶ Инжектируемый пак
-
post_run
(request, context, response)¶ Некоторые косвенные методы определения поведения пользователя. Если в ответе на запрос упоминается заголовок, то считается, что вернули окно. Если запомненный ранее пользователь был аутентифицирован, а после формирования ответа - нет, то считается, что произошел выход из системы. И наоборот.
-
pre_run
(request, context)¶ Перед выполнением экшена у инжектируемого пака необходимо запоминить пользователя
-
-
datalogging.app_meta.
invader_invoke
(self, request, action, stack, *args, **kwargs)¶ Параметры: - request (request) – Экземпляр Action’a.
- action (Action) – Экземпляр Action’a.
- stack (list) – Экземпляр Action’a.
-
datalogging.app_meta.
is_loggable
(obj)¶ Данная функция использоуется для опредения нуждается ли данный объект в логировании. Проводится проверка объекта на вхождение имени его класса, либо имени класса его предка в список-исключение EXCLUDED_ACTIONS. Если переданный экземпляр найден в списке, то объект счтается подходящим для создания записи.
Параметры: obj (Action) – Экземпляр Action’a. Результат: bool – результат проверки.
dbrouters¶
-
class
datalogging.dbrouters.
DataLoggerRouter
¶ Роутер не позволяет создавать связи с моделью лога.
-
allow_relation
(obj1, obj2, **hints)¶ Метод контролируюий факт создания связи между обектами. Отсекаются связи создаваемые с моделяи данного модуля.
-
allow_syncdb
(db, model)¶ Метод регулирующий возможность инициализации моделей.
-
db_for_read
(model, **hints)¶ Выбор БД для чтения. В данном методе происходит проверка на заданное имя модели и в случаем если модель принадлежит данному модулю, для нее используются отдельные настройки
-
db_for_write
(model, **hints)¶ Выбор БД для записи. Применяются те же правила, что и при чтения из базы.
-
enums¶
-
class
datalogging.enums.
ConfigurableEnum
¶ Метакласс автозагрузки типов перечислений.
Автозагрузка типов осуществляется из settings.py проекта, причем данные должны являться словарем с кортежами в качестве значений. Наименование параметра должно начинаться с приставки “DATALOGGER”. Пример:
DATALOGGER_EVENT_TYPE = { 'SYSTEM': ('se', u'Системное событие'), }
После инициализации класса, можно вызывать как обычный аттрибут. И в целом класс используется как обычное перечисление. Пример:
print EventType.SYSTEM // 'se'
-
class
datalogging.enums.
EventCode
¶ Перечисление кодов событий.
Пример возможных кодов: - (insert, Добавление) - (delete, Удаление)
-
class
datalogging.enums.
EventType
¶ Перечисление типов событий.
Пример возможных типов: - (se, Системное событие) - (lse, Юридически важное событие)
-
class
datalogging.enums.
SystemsEnum
¶ Перечисление сред логирования.
Пример возможных значений: - (‘scheduled_task’, u’Задача по расписанию’) - (‘ws’, u’Web-сервис’)
helpers¶
-
datalogging.helpers.
get_snapshot
(instance)¶ Получение снимка состояния экземпляра модели
-
datalogging.helpers.
is_server_mode
()¶ Определение режима работы сервера.
-
datalogging.helpers.
memorize_user
(user)¶ Запоминание пользователя в текущем треде.
-
datalogging.helpers.
only_server_mode
(func)¶ Предотвращение запуска логгера в шеле
-
datalogging.helpers.
remember_user
()¶ Вспоминаем пользователя
managers¶
middleware¶
-
class
datalogging.middleware.
CaptureRequestMiddleware
¶ Middleware сохраняющее текущий request.
В последующем request используется для получения ряда параметров необходимых для логирования действий ( например ip пользователя ).
-
class
datalogging.middleware.
RequestTokenMiddleware
¶ Middleware создающее токен для текущего запроса.
Токен в последующем устаналвивается во все возникающие события в логгере, таким образом можно просмотреть/отследить цепочку событий возникших во время запроса.
model¶
-
class
datalogging.models.
DataLog
(*args, **kwargs)¶ Лог активности пользователей.
Лог предусматривает отслеживание активности пользователей в системе, такой, как удаление/добавление/изменение записей документов, настро ек, прав доступа и т.д.
- guid:
- Уникальный ИД записи не является primary_key в случае с реляционными БД. Его необходимость возникает в момент выгрузки, когда несколько логов выгружаются в одну систему и применение primary_key из реляционной БД вызвало бы ряд неудобств связанных с коллизиями. Во избежание коллизий используется uuid с солью.
- system_type:
- В качестве подсистемы выступают сервисы(rest, soap), фоновые задачи, основное приложение и т.д. Т.е. это по существу среда возникновения события, которое следует перехватить.
- request_token:
- В рамках одного запроса сущетствует токен по которому можно отследить всю активность пользователя в течении запроса.
-
classmethod
get_verbose_msg
(log_record, model_instance, **kwargs)¶ Получение человекопонятного описания события.
Т.к. для каждого проекта формирование описания будет разным метод работает через сигнал msg_for_log_signal.
-
classmethod
make_snapshot
(instance, event_code)¶ Формирование записи лога о состоянии модели.
Перед сохранением записи лога вызывается сигнал post_snapshot, где в качестве аргумента передается не сохраненная запись лога, что в свою очередь позволяет воздействовать на запись.
Параметры: - instance – Экземпляр модели
- event_code – Событие происшедшее с моделью
-
classmethod
make_system_event
(event_code, context_data=None, **kwargs)¶ Формирование записи о событии происшедшем в системе.
Все спецефичные данные о событии обрабатываются через сигнал post_system_event ровно так же, как в методе make_snapshot.
Параметры: - event_code – Событие в системе.
- context_data (dict) – Доп. данные описывающие событие.
-
save
(instance, *args, **kwargs)¶ Saves the current instance. Override this in a subclass if you want to control the saving process.
The ‘force_insert’ and ‘force_update’ parameters can be used to insist that the “save” must be an SQL insert or update (or equivalent for non-SQL backends), respectively. Normally, they should not be set.
-
class
datalogging.models.
LogJSONEncoder
(skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, encoding='utf-8', default=None)¶ Наследник JSONEncoder, который умеет работать с ugettext.
signals¶
-
datalogging.signals.
add_datalogger_manager
(sender, **kw)¶ Обработчик сигнала class_prepared.
Если модель указана в списке
DATALOGGER_SUSPECTS_MODEL
, то обработчик добавляет в класс моделиDataLoggingManager
.