aboutsummaryrefslogtreecommitdiffstats
path: root/python/flask/views.py
diff options
context:
space:
mode:
authorJames Taylor <user234683@users.noreply.github.com>2019-09-06 16:31:13 -0700
committerJames Taylor <user234683@users.noreply.github.com>2019-09-06 16:31:13 -0700
commit3d57e14df7ba5f14a634295caf3b2e60da50bfe2 (patch)
tree4903bcb79a49ad714a1a9129765b9545405c9978 /python/flask/views.py
parentac32b24b2a011292b704a3f27e8fd08a7ae9424b (diff)
downloadyt-local-3d57e14df7ba5f14a634295caf3b2e60da50bfe2.tar.lz
yt-local-3d57e14df7ba5f14a634295caf3b2e60da50bfe2.tar.xz
yt-local-3d57e14df7ba5f14a634295caf3b2e60da50bfe2.zip
Remove windows python distribution from repo and add requirements.txt
Diffstat (limited to 'python/flask/views.py')
-rw-r--r--python/flask/views.py158
1 files changed, 0 insertions, 158 deletions
diff --git a/python/flask/views.py b/python/flask/views.py
deleted file mode 100644
index 1f2c997..0000000
--- a/python/flask/views.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
- flask.views
- ~~~~~~~~~~~
-
- This module provides class-based views inspired by the ones in Django.
-
- :copyright: © 2010 by the Pallets team.
- :license: BSD, see LICENSE for more details.
-"""
-
-from .globals import request
-from ._compat import with_metaclass
-
-
-http_method_funcs = frozenset(['get', 'post', 'head', 'options',
- 'delete', 'put', 'trace', 'patch'])
-
-
-class View(object):
- """Alternative way to use view functions. A subclass has to implement
- :meth:`dispatch_request` which is called with the view arguments from
- the URL routing system. If :attr:`methods` is provided the methods
- do not have to be passed to the :meth:`~flask.Flask.add_url_rule`
- method explicitly::
-
- class MyView(View):
- methods = ['GET']
-
- def dispatch_request(self, name):
- return 'Hello %s!' % name
-
- app.add_url_rule('/hello/<name>', view_func=MyView.as_view('myview'))
-
- When you want to decorate a pluggable view you will have to either do that
- when the view function is created (by wrapping the return value of
- :meth:`as_view`) or you can use the :attr:`decorators` attribute::
-
- class SecretView(View):
- methods = ['GET']
- decorators = [superuser_required]
-
- def dispatch_request(self):
- ...
-
- The decorators stored in the decorators list are applied one after another
- when the view function is created. Note that you can *not* use the class
- based decorators since those would decorate the view class and not the
- generated view function!
- """
-
- #: A list of methods this view can handle.
- methods = None
-
- #: Setting this disables or force-enables the automatic options handling.
- provide_automatic_options = None
-
- #: The canonical way to decorate class-based views is to decorate the
- #: return value of as_view(). However since this moves parts of the
- #: logic from the class declaration to the place where it's hooked
- #: into the routing system.
- #:
- #: You can place one or more decorators in this list and whenever the
- #: view function is created the result is automatically decorated.
- #:
- #: .. versionadded:: 0.8
- decorators = ()
-
- def dispatch_request(self):
- """Subclasses have to override this method to implement the
- actual view function code. This method is called with all
- the arguments from the URL rule.
- """
- raise NotImplementedError()
-
- @classmethod
- def as_view(cls, name, *class_args, **class_kwargs):
- """Converts the class into an actual view function that can be used
- with the routing system. Internally this generates a function on the
- fly which will instantiate the :class:`View` on each request and call
- the :meth:`dispatch_request` method on it.
-
- The arguments passed to :meth:`as_view` are forwarded to the
- constructor of the class.
- """
- def view(*args, **kwargs):
- self = view.view_class(*class_args, **class_kwargs)
- return self.dispatch_request(*args, **kwargs)
-
- if cls.decorators:
- view.__name__ = name
- view.__module__ = cls.__module__
- for decorator in cls.decorators:
- view = decorator(view)
-
- # We attach the view class to the view function for two reasons:
- # first of all it allows us to easily figure out what class-based
- # view this thing came from, secondly it's also used for instantiating
- # the view class so you can actually replace it with something else
- # for testing purposes and debugging.
- view.view_class = cls
- view.__name__ = name
- view.__doc__ = cls.__doc__
- view.__module__ = cls.__module__
- view.methods = cls.methods
- view.provide_automatic_options = cls.provide_automatic_options
- return view
-
-
-class MethodViewType(type):
- """Metaclass for :class:`MethodView` that determines what methods the view
- defines.
- """
-
- def __init__(cls, name, bases, d):
- super(MethodViewType, cls).__init__(name, bases, d)
-
- if 'methods' not in d:
- methods = set()
-
- for key in http_method_funcs:
- if hasattr(cls, key):
- methods.add(key.upper())
-
- # If we have no method at all in there we don't want to add a
- # method list. This is for instance the case for the base class
- # or another subclass of a base method view that does not introduce
- # new methods.
- if methods:
- cls.methods = methods
-
-
-class MethodView(with_metaclass(MethodViewType, View)):
- """A class-based view that dispatches request methods to the corresponding
- class methods. For example, if you implement a ``get`` method, it will be
- used to handle ``GET`` requests. ::
-
- class CounterAPI(MethodView):
- def get(self):
- return session.get('counter', 0)
-
- def post(self):
- session['counter'] = session.get('counter', 0) + 1
- return 'OK'
-
- app.add_url_rule('/counter', view_func=CounterAPI.as_view('counter'))
- """
-
- def dispatch_request(self, *args, **kwargs):
- meth = getattr(self, request.method.lower(), None)
-
- # If the request method is HEAD and we don't have a handler for it
- # retry with GET.
- if meth is None and request.method == 'HEAD':
- meth = getattr(self, 'get', None)
-
- assert meth is not None, 'Unimplemented method %r' % request.method
- return meth(*args, **kwargs)