flask_classful support
- Dominant language
- Python
- Stars
- 652
- Forks
- 151
- PR merge metrics
- No merged PRs in 30d
Description
I'm using [Flask-Classful](https://github.com/teracyhq/flask-classful) which is similar to flask MethodView.
The flask `url_map` looks like this:
```
'AssetAPI:delete': [' (DELETE, OPTIONS) -> AssetAPI:delete>],
'AssetAPI:dispatch_request': [ AssetAPI:dispatch_request>],
'AssetAPI:get': [' (HEAD, GET, OPTIONS) -> AssetAPI:get>],
'AssetAPI:index': [ AssetAPI:index>],
'AssetAPI:list_query': [ AssetAPI:list_query>],
'AssetAPI:post': [ AssetAPI:post>],
'AssetAPI:presigned_url': [/presigned_url' (HEAD, GET, OPTIONS) -> AssetAPI:presigned_url>],
'AssetAPI:put': [' (PUT, OPTIONS) -> AssetAPI:put>],
'AssetAPI:request_upload': [ AssetAPI:request_upload>],
```
If I call `api_spec.register(AssetAPI.as_view('asset'))`
I get the error:
```
File "/Users/cyber/dev/myapp/api/core/asset.py", line 197, in
app.api_spec.register(AssetAPI.as_view('asset'))
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/flask_apispec/extension.py", line 119, in register
resource_class_args, resource_class_kwargs)
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/flask_apispec/extension.py", line 66, in _defer
bound()
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/flask_apispec/extension.py", line 134, in _register
paths = self.view_converter.convert(target, endpoint, blueprint)
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/flask_apispec/apidoc.py", line 27, in convert
rules = self.app.url_map._rules_by_endpoint[endpoint]
KeyError: 'asset'
```
I tried doing `app.add_url_rule('/api/asset', view_func=AssetAPI.as_view('asset'))` first (which isn't necessary since the URLs are already added but differently) and I get the error:
```
File "/Users/cyber/dev/myapp/api/core/asset.py", line 197, in
app.api_spec.register(AssetAPI.as_view('asset'))
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/flask_apispec/extension.py", line 119, in register
resource_class_args, resource_class_kwargs)
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/flask_apispec/extension.py", line 66, in _defer
bound()
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/flask_apispec/extension.py", line 146, in _register
self.spec.add_path(**path)
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/apispec/core.py", line 178, in add_path
self, path=path, operations=operations, **kwargs
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/apispec/ext/flask.py", line 67, in path_from_view
rule = _rule_for_view(view)
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/apispec/ext/flask.py", line 43, in _rule_for_view
view_funcs = current_app.view_functions
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/werkzeug/local.py", line 306, in _get_current_object
return self.__local()
File "/Users/cyber/.virtualenvs/jb/lib/python3.6/site-packages/flask/globals.py", line 51, in _find_app
raise RuntimeError(_app_ctx_err_msg)
RuntimeError: Working outside of application context.
```
So am I just screwed if I use flask-classy/classful? Or is there some way to bridge the two?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.