blob: e1d16f5d3eb84c4321a68f8f595e3d31606d365a [file] [log] [blame]
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Utils."""
from google.appengine.api import users
def admin_only(func):
"""Valid for BasePage objects only."""
def decorated(self, *args, **kwargs):
if self.is_admin:
return func(self, *args, **kwargs)
else:
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Forbidden')
self.error(403)
return decorated
def clean_int(value, default):
"""Convert a value to an int, or the default value if conversion fails."""
try:
return int(value)
except (TypeError, ValueError):
return default
def require_user(func):
"""A user must be logged in."""
def decorated(self, *args, **kwargs):
if not self.user:
self.redirect(users.create_login_url(self.request.url))
else:
return func(self, *args, **kwargs)
return decorated