金字塔获取当前用户/用户ID而无需访问请求

时间:2016-07-25 11:05:45

标签: python sqlalchemy pyramid

有没有办法访问当前用户对象或至少id而无法访问请求?我们在模型中说?

我使用金字塔和SQLAlchemy。

首先我想到了Singleton,但我认为当有更多用户时,这可能会返回错误的对象。

class UserSingleton(object):
    user = None

    def __new__(cls, user=None):
        UserSingleton.user = user
        return UserSingleton.user

    @classmethod
    def get(cls):
        return cls.user

我需要将它与我的模型一起使用,但我不能在这里传递请求,因为这是由orm事件调用的:

@classmethod
def log(cls, description, log_type=None, name=None):
    user = ??
    audit_log = cls(
        user_id=user.id if user else None,
        description=description,
        type=log_type,
        name=name
    )

    DBSession.add(audit_log)

    return audit_log

1 个答案:

答案 0 :(得分:4)

好的,通过这样做找到了解决方案:

from pyramid.threadlocal import get_current_request
request = get_current_request()