Как пройти сеанс Falcon в событии SQLAlchemy

Я пытаюсь обработать события sqlalchemy в соколе, задача состоит в том, чтобы отправить сообщение при изменении поля модели:

# -*- coding: utf-8 -*-

from sqlalchemy import Column
from sqlalchemy import Boolean, Date, ForeignKey, Numeric
from sqlalchemy import event
from sqlalchemy_utils import UUIDType

from app.model import MyBaseModel

from app.emails import MyEventListener


class EventSend(MyBaseModel):
    __tablename__ = 'event_send'

    event_to = Column(Numeric(5, 1), nullable=True)
    current = Column(Boolean, nullable=False)
    start = Column(Date)
    end = Column(Date)
    status_id = Column(UUIDType, ForeignKey('status.id'))


event.listen(EventSend.status_id, 'set', MyEventListener.handler, named=True)

В MyEventListener я хотел бы знать пользователя, который внес изменения и вызвал событие. Но как я могу получить аутентифицированного пользователя без пропущенного сеанса?

event отправляет в MyEventListener только следующие аргументы:

kwargs["value"]: new value for triggered field
kwargs["oldvalue"]: current value of the field
kwargs["target"]: object that triggers event e.g. app.model.EventSend object
kwargs["initiator"] sqlalchemy.orm.attributes.Event object

MyEventListener:

class MyEventListener(object):

    @classmethod
    def handler(cls, *args, **kwargs):

        if args:
            print(args)
        elif kwargs:
            print(kwargs)
        else:
            print("Wrong or unknown event")

Подскажите, пожалуйста, как я могу получить пользователя в этом случае? Или что нужно сделать, чтобы получить пользователя, который внес изменения, когда событие вызывается в обработчике?

0 ответов

Другие вопросы по тегам