Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if not emails:
message = (
"Access denied. Please use another account or "
"ask your admin to add your email to flower --auth."
)
raise tornado.web.HTTPError(403, message)
self.set_secure_cookie("user", str(emails.pop()))
next_ = self.get_argument('next', self.application.options.url_prefix or '/')
if self.application.options.url_prefix and next_[0] != '/':
next_ = '/' + next_
self.redirect(next_)
class LogoutHandler(BaseHandler):
def get(self):
self.clear_cookie('user')
self.render('404.html', message='Successfully logged out!')
try:
from urllib.parse import urlencode
except ImportError:
from urllib import urlencode
import tornado.gen
import tornado.web
import tornado.auth
from tornado.options import options
from celery.utils.imports import instantiate
from ..views import BaseHandler
class GoogleAuth2LoginHandler(BaseHandler, tornado.auth.GoogleOAuth2Mixin):
_OAUTH_SETTINGS_KEY = 'oauth'
@tornado.gen.coroutine
def get(self):
redirect_uri = self.settings[self._OAUTH_SETTINGS_KEY]['redirect_uri']
if self.get_argument('code', False):
user = yield self.get_authenticated_user(
redirect_uri=redirect_uri,
code=self.get_argument('code'),
)
yield self._on_auth(user)
else:
yield self.authorize_redirect(
redirect_uri=redirect_uri,
client_id=self.settings[self._OAUTH_SETTINGS_KEY]['key'],
scope=['profile', 'email'],
from __future__ import absolute_import
import logging
from tornado import web
from tornado import gen
from ..views import BaseHandler
from ..api.workers import ListWorkers
logger = logging.getLogger(__name__)
class WorkerView(BaseHandler):
@web.authenticated
@gen.coroutine
def get(self, name):
try:
yield ListWorkers.update_workers(app=self.application, workername=name)
except Exception as e:
logger.error(e)
worker = ListWorkers.worker_cache.get(name)
if worker is None:
raise web.HTTPError(404, "Unknown worker '%s'" % name)
if 'stats' not in worker:
raise web.HTTPError(
404,
"Unable to get stats for '%s' worker" % name
"""
def __init__(self, value):
self.value = value
def __eq__(self, other):
return self.value == other.value
def __lt__(self, other):
try:
return self.value < other.value
except TypeError:
return self.value is None
class TasksDataTable(BaseHandler):
@web.authenticated
def get(self):
app = self.application
draw = self.get_argument('draw', type=int)
start = self.get_argument('start', type=int)
length = self.get_argument('length', type=int)
search = self.get_argument('search[value]', type=str)
column = self.get_argument('order[0][column]', type=int)
sort_by = self.get_argument('columns[%s][data]' % column, type=str)
sort_order = self.get_argument('order[0][dir]', type=str) == 'desc'
def key(item):
return Comparable(getattr(item[1], sort_by))
sorted_tasks = sorted(
from __future__ import absolute_import
import tornado.web
from ..views import BaseHandler
class NotFoundErrorHandler(BaseHandler):
def get(self):
raise tornado.web.HTTPError(404)
def post(self):
raise tornado.web.HTTPError(404)
message = (
"Access denied to '{email}'. Please use another account or "
"ask your admin to add your email to flower --auth."
).format(email=email)
raise tornado.web.HTTPError(403, message)
self.set_secure_cookie("user", str(email))
next_ = self.get_argument('next', self.application.options.url_prefix or '/')
if self.application.options.url_prefix and next_[0] != '/':
next_ = '/' + next_
self.redirect(next_)
class LoginHandler(BaseHandler):
def __new__(cls, *args, **kwargs):
return instantiate(options.auth_provider, *args, **kwargs)
class GithubLoginHandler(BaseHandler, tornado.auth.OAuth2Mixin):
_OAUTH_AUTHORIZE_URL = "https://github.com/login/oauth/authorize"
_OAUTH_ACCESS_TOKEN_URL = "https://github.com/login/oauth/access_token"
_OAUTH_NO_CALLBACKS = False
_OAUTH_SETTINGS_KEY = 'oauth'
@tornado.gen.coroutine
def get_authenticated_user(self, redirect_uri, code):
body = urlencode({
"redirect_uri": redirect_uri,
"code": code,
from __future__ import absolute_import
from collections import defaultdict
from tornado import web
from tornado import gen
from celery import states
from ..views import BaseHandler
from ..utils.broker import Broker
from ..api.control import ControlHandler
class Monitor(BaseHandler):
@web.authenticated
def get(self):
self.render("monitor.html")
class SucceededTaskMonitor(BaseHandler):
@web.authenticated
def get(self):
timestamp = self.get_argument('lastquery', type=float)
state = self.application.events.state
data = defaultdict(int)
for _, task in state.itertasks():
if (timestamp < task.timestamp and task.state == states.SUCCESS):
data[task.worker.hostname] += 1
for worker in state.workers:
def get(self):
timestamp = self.get_argument('lastquery', type=float)
state = self.application.events.state
data = defaultdict(int)
for _, task in state.itertasks():
if (timestamp < task.timestamp and task.state == states.SUCCESS):
data[task.worker.hostname] += 1
for worker in state.workers:
if worker not in data:
data[worker] = 0
self.write(data)
class TimeToCompletionMonitor(BaseHandler):
@web.authenticated
def get(self):
timestamp = self.get_argument('lastquery', type=float)
state = self.application.events.state
execute_time = 0
queue_time = 0
num_tasks = 0
for _, task in state.itertasks():
if (timestamp < task.timestamp and task.state == states.SUCCESS):
# eta can make "time in queue" look really scary.
if task.eta is not None:
continue
if task.started is None or task.received is None or\
task.succeeded is None:
from tornado import web
from tornado import gen
from celery import states
from ..views import BaseHandler
from ..utils.broker import Broker
from ..api.control import ControlHandler
class Monitor(BaseHandler):
@web.authenticated
def get(self):
self.render("monitor.html")
class SucceededTaskMonitor(BaseHandler):
@web.authenticated
def get(self):
timestamp = self.get_argument('lastquery', type=float)
state = self.application.events.state
data = defaultdict(int)
for _, task in state.itertasks():
if (timestamp < task.timestamp and task.state == states.SUCCESS):
data[task.worker.hostname] += 1
for worker in state.workers:
if worker not in data:
data[worker] = 0
self.write(data)
from __future__ import absolute_import
import logging
from tornado import web
from tornado import gen
from ..views import BaseHandler
from ..utils.broker import Broker
from ..api.control import ControlHandler
logger = logging.getLogger(__name__)
class BrokerView(BaseHandler):
@web.authenticated
@gen.coroutine
def get(self):
app = self.application
broker_options = self.capp.conf.BROKER_TRANSPORT_OPTIONS
http_api = None
if app.transport == 'amqp' and app.options.broker_api:
http_api = app.options.broker_api
broker_use_ssl = None
if self.capp.conf.BROKER_USE_SSL:
broker_use_ssl = self.capp.conf.BROKER_USE_SSL
try:
broker = Broker(app.capp.connection().as_uri(include_password=True),