Add subscriber hook for setting inbox count in template context.
This commit is contained in:
parent
c65bc6f229
commit
7649bf142b
|
@ -1,9 +1,8 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2012 Lance Edgar
|
# Copyright © 2010-2016 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -21,20 +20,23 @@
|
||||||
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Event Subscribers
|
Event Subscribers
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from pyramid import threadlocal
|
from __future__ import unicode_literals, absolute_import
|
||||||
import rattail
|
|
||||||
from . import helpers
|
|
||||||
|
|
||||||
from pyramid.security import authenticated_userid
|
import rattail
|
||||||
from .db import Session
|
from rattail import enum
|
||||||
from rattail.db.model import User
|
from rattail.db import model
|
||||||
from rattail.db.auth import has_permission
|
from rattail.db.auth import has_permission
|
||||||
|
|
||||||
|
from pyramid import threadlocal
|
||||||
|
from pyramid.security import authenticated_userid
|
||||||
|
|
||||||
|
from tailbone import helpers
|
||||||
|
from tailbone.db import Session
|
||||||
|
|
||||||
|
|
||||||
def add_rattail_config_attribute_to_request(event):
|
def add_rattail_config_attribute_to_request(event):
|
||||||
"""
|
"""
|
||||||
|
@ -78,6 +80,24 @@ def before_render(event):
|
||||||
renderer_globals['rattail'] = rattail
|
renderer_globals['rattail'] = rattail
|
||||||
|
|
||||||
|
|
||||||
|
def add_inbox_count(event):
|
||||||
|
"""
|
||||||
|
Adds the current user's inbox message count to the global renderer context.
|
||||||
|
|
||||||
|
Note that this is not enabled by default; to turn it on you must do this:
|
||||||
|
|
||||||
|
config.add_subscriber('tailbone.subscribers.add_inbox_count', 'pyramid.events.BeforeRender')
|
||||||
|
"""
|
||||||
|
request = event.get('request') or threadlocal.get_current_request()
|
||||||
|
if request.user:
|
||||||
|
renderer_globals = event
|
||||||
|
renderer_globals['inbox_count'] = Session.query(model.Message)\
|
||||||
|
.outerjoin(model.MessageRecipient)\
|
||||||
|
.filter(model.MessageRecipient.recipient == Session.merge(request.user))\
|
||||||
|
.filter(model.MessageRecipient.status == enum.MESSAGE_STATUS_INBOX)\
|
||||||
|
.count()
|
||||||
|
|
||||||
|
|
||||||
def context_found(event):
|
def context_found(event):
|
||||||
"""
|
"""
|
||||||
Attach some goodies to the request object.
|
Attach some goodies to the request object.
|
||||||
|
@ -96,7 +116,7 @@ def context_found(event):
|
||||||
request.user = None
|
request.user = None
|
||||||
uuid = authenticated_userid(request)
|
uuid = authenticated_userid(request)
|
||||||
if uuid:
|
if uuid:
|
||||||
request.user = Session.query(User).get(uuid)
|
request.user = Session.query(model.User).get(uuid)
|
||||||
if request.user:
|
if request.user:
|
||||||
Session().set_continuum_user(request.user)
|
Session().set_continuum_user(request.user)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue