blob: 165f5cda9ca5b616b65dd4d6c5ad76d7536706cb [file] [log] [blame]
# Copyright 2008 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Custom middleware. Some of this may be generally useful."""
import logging
import time
from google.appengine.api import users
from django.utils.http import http_date
import models
import view_util
import library
class NoCacheMiddleware(object):
"""Set the cache-control and expires headers."""
def process_response(self, request, response):
response['Cache-Control'] = 'no-cache'
response['Expires'] = http_date(time.time() - 1)
return response
class ClearXsrfKeyMiddleware(object):
"""Sets the xsrf_key to None so it can later be read."""
def process_request(self, request):
view_util._xsrf_key = None
view_util._xsrf_now = None
view_util._xsrf_cache = {}
library._user_cache.clear_local()
class AddUserToRequestMiddleware(object):
"""Add a user object and a user_is_admin flag to each request."""
def process_request(self, request):
request.user = users.get_current_user()
if request.user:
request.is_gae_admin = users.is_current_user_admin()
request.user_is_admin = models.AccountGroup.is_user_admin(request.user)
request.projects_owned_by_user = models.Project.projects_owned_by_user(
request.user)
request.show_admin_tab = (request.user_is_admin
or len(request.projects_owned_by_user) > 0)
else:
request.is_gae_admin = False
request.user_is_admin = False
request.projects_owend_by_user = set()
request.show_admin_tab = False
# Update the cached value of the current user's Account
account = None
if request.user is not None:
account = models.Account.get_account_for_user(request.user)
request.account = account
else:
request.account = None
models.Account.current_user_account = account