flask-react-docker-app icon indicating copy to clipboard operation
flask-react-docker-app copied to clipboard

TypeError: 'str' object is not callable

Open rrfaria opened this issue 5 years ago • 0 comments

How to reproduce

# Start 
$ docker-compose up

# Run database migration
$ docker-compose exec api python manage.py db upgrade

# Run database seed
$ docker-compose exec api python manage.py seed_db

Go to:

http://localhost:8080/login

inspect the page and try login

If you look at request those errors are shown:

TypeError TypeError: 'str' object is not callable

Traceback (most recent call last) File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2464, in call

def __call__(self, environ, start_response):
    """The WSGI server calls the Flask application object as the
    WSGI application. This calls :meth:`wsgi_app` which can be
    wrapped to applying middleware."""
    return self.wsgi_app(environ, start_response)

def __repr__(self):
    return "<%s %r>" % (self.__class__.__name__, self.name)

File "/usr/local/lib/python3.7/site-packages/werkzeug/middleware/proxy_fix.py", line 169, in call self.x_prefix, environ_get("HTTP_X_FORWARDED_PREFIX") ) if x_prefix: environ["SCRIPT_NAME"] = x_prefix

    return self.app(environ, start_response)

File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2450, in wsgi_app try: ctx.push() response = self.full_dispatch_request() except Exception as e: error = e response = self.handle_exception(e) except: # noqa: B001 error = sys.exc_info()[1] raise return response(environ, start_response) finally: File "/usr/local/lib/python3.7/site-packages/flask_restx/api.py", line 638, in error_router """ if self._has_fr_route(): try: return self.handle_error(e) except Exception as f: return original_handler(f) return original_handler(e)

def handle_error(self, e):
    """
    Error handler for the API transforms a raised exception into a Flask response,

File "/usr/local/lib/python3.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function # Wrap exception handlers with cross_origin # These error handlers will still respect the behavior of the route if options.get('intercept_exceptions', True): def _after_request_decorator(f): def wrapped_function(*args, **kwargs): return cors_after_request(app.make_response(f(*args, **kwargs))) return wrapped_function

        if hasattr(app, 'handle_exception'):
            app.handle_exception = _after_request_decorator(
                app.handle_exception)

File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1867, in handle_exception # if we want to repropagate the exception, we can attempt to # raise it with the whole traceback in case we can do that # (the function was actually called from the except part) # otherwise, we just raise the error again if exc_value is e: reraise(exc_type, exc_value, tb) else: raise e

    self.log_exception((exc_type, exc_value, tb))
    server_error = InternalServerError()

File "/usr/local/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise import collections.abc as collections_abc

def reraise(tp, value, tb=None):
    if value.__traceback__ is not tb:
        raise value.with_traceback(tb)
    raise value

implements_to_string = _identity

else: iterkeys = lambda d: d.iterkeys() File "/usr/local/lib/python3.7/site-packages/flask_restx/api.py", line 636, in error_router :param function original_handler: the original Flask error handler for the app :param Exception e: the exception raised while handling the request """ if self._has_fr_route(): try: return self.handle_error(e) except Exception as f: return original_handler(f) return original_handler(e)

def handle_error(self, e):

File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app ctx = self.request_context(environ) error = None try: try: ctx.push() response = self.full_dispatch_request() except Exception as e: error = e response = self.handle_exception(e) except: # noqa: B001 error = sys.exc_info()[1] File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request request_started.send(self) rv = self.preprocess_request() if rv is None: rv = self.dispatch_request() except Exception as e: rv = self.handle_user_exception(e) return self.finalize_request(rv)

def finalize_request(self, rv, from_error_handler=False):
    """Given the return value from a view function this finalizes
    the request by converting it into a response and invoking the

File "/usr/local/lib/python3.7/site-packages/flask_restx/api.py", line 638, in error_router """ if self._has_fr_route(): try: return self.handle_error(e) except Exception as f: return original_handler(f) return original_handler(e)

def handle_error(self, e):
    """
    Error handler for the API transforms a raised exception into a Flask response,

File "/usr/local/lib/python3.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function # Wrap exception handlers with cross_origin # These error handlers will still respect the behavior of the route if options.get('intercept_exceptions', True): def _after_request_decorator(f): def wrapped_function(*args, **kwargs): return cors_after_request(app.make_response(f(*args, **kwargs))) return wrapped_function

        if hasattr(app, 'handle_exception'):
            app.handle_exception = _after_request_decorator(
                app.handle_exception)

File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception return self.handle_http_exception(e)

    handler = self._find_error_handler(e)

    if handler is None:
        reraise(exc_type, exc_value, tb)
    return handler(e)

def handle_exception(self, e):
    """Handle an exception that did not have an error handler
    associated with it, or that was raised from an error handler.

File "/usr/local/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise import collections.abc as collections_abc

def reraise(tp, value, tb=None):
    if value.__traceback__ is not tb:
        raise value.with_traceback(tb)
    raise value

implements_to_string = _identity

else: iterkeys = lambda d: d.iterkeys() File "/usr/local/lib/python3.7/site-packages/flask_restx/api.py", line 636, in error_router :param function original_handler: the original Flask error handler for the app :param Exception e: the exception raised while handling the request """ if self._has_fr_route(): try: return self.handle_error(e) except Exception as f: return original_handler(f) return original_handler(e)

def handle_error(self, e):

File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request self.try_trigger_before_first_request_functions() try: request_started.send(self) rv = self.preprocess_request() if rv is None: rv = self.dispatch_request() except Exception as e: rv = self.handle_user_exception(e) return self.finalize_request(rv)

def finalize_request(self, rv, from_error_handler=False):

File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request getattr(rule, "provide_automatic_options", False) and req.method == "OPTIONS" ): return self.make_default_options_response() # otherwise dispatch to the handler for that endpoint return self.view_functionsrule.endpoint

def full_dispatch_request(self):
    """Dispatches the request and on top of that performs request
    pre and postprocessing as well as HTTP exception catching and
    error handling.

File "/usr/local/lib/python3.7/site-packages/flask_restx/api.py", line 375, in wrapper :param resource: The resource as a flask view function """

    @wraps(resource)
    def wrapper(*args, **kwargs):
        resp = resource(*args, **kwargs)
        if isinstance(resp, BaseResponse):
            return resp
        data, code, headers = unpack(resp)
        return self.make_response(data, code, headers=headers)

File "/usr/local/lib/python3.7/site-packages/flask/views.py", line 89, in view 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:

File "/usr/local/lib/python3.7/site-packages/flask_restx/resource.py", line 40, in dispatch_request if meth is None and request.method == "HEAD": meth = getattr(self, "get", None) assert meth is not None, "Unimplemented method %r" % request.method

    for decorator in self.method_decorators:
        meth = decorator(meth)

    self.validate_payload(meth)

    resp = meth(*args, **kwargs)

TypeError: 'str' object is not callable

rrfaria avatar Jul 18 '20 15:07 rrfaria