1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-06-24 22:22:38 +00:00
seahub/base/middleware.py

60 lines
1.7 KiB
Python

from django.core.cache import cache
from seaserv import get_binding_peerids, get_orgs_by_user
from seahub.notifications.models import Notification
from seahub.notifications.utils import refresh_cache
try:
from seahub.settings import CLOUD_MODE
except ImportError:
CLOUD_MODE = False
class BaseMiddleware(object):
"""
Middleware that add organization info to request when user in organization
context.
"""
def process_request(self, request):
if CLOUD_MODE:
request.cloud_mode = True
# Get all orgs user created.
orgs = get_orgs_by_user(request.user.username)
request.user.orgs = orgs
else:
request.cloud_mode = False
request.user.org = None
request.user.orgs = None
return None
def process_response(self, request, response):
return response
class InfobarMiddleware(object):
"""Query info bar close status, and store into reqeust."""
def get_from_db(self):
ret = Notification.objects.all().filter(primary=1)
refresh_cache()
return ret
def process_request(self, request):
topinfo_close = request.COOKIES.get('info_id', '')
cur_note = cache.get('CUR_TOPINFO') if cache.get('CUR_TOPINFO') else \
self.get_from_db()
if not cur_note:
request.cur_note = None
else:
if str(cur_note[0].id) in topinfo_close.split('_'):
request.cur_note = None
else:
request.cur_note = cur_note[0]
return None
def process_response(self, request, response):
return response