You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by GitBox <gi...@apache.org> on 2018/06/01 15:12:31 UTC
[GitHub] gbates101 opened a new issue #5124: Loading appbuilder views
instead of flask blueprints
gbates101 opened a new issue #5124: Loading appbuilder views instead of flask blueprints
URL: https://github.com/apache/incubator-superset/issues/5124
- [x] I have checked the superset logs for python stacktraces and included it here as text if any
- [x] I have reproduced the issue with at least the latest released version of superset
- [x] I have checked the issue tracker for the same issue and I haven't found one similar
### Superset version
0.25.4
### Expected results
Writing a view from appbuilder's [BaseView](http://flask-appbuilder.readthedocs.io/en/latest/views.html) (like superset does internally) should be loadable. Could be similar to how [ADDITIONAL_MODULE_DS_MAP](https://github.com/apache/incubator-superset/blob/cc0942ac988fc09538da14495f05411fcf2ac5e8/superset/__init__.py#L178) config setting is used.
### Actual results
Unless I modify source and append an import to [__init__.py](https://github.com/apache/incubator-superset/blob/cc0942ac988fc09538da14495f05411fcf2ac5e8/superset/__init__.py#L191) to load my views, I have to rewrite my view as a [Flask blueprint](http://flask.pocoo.org/docs/1.0/blueprints/) to import it.
### Steps to reproduce
1. Create a class that extends `BaseSupersetView`.
2. Use appbuilder API to import it.
3. Load module as a blueprint in config.
4. Nothing happens. It must be rewritten to use flask blueprint API.
Here is the view I was working with. Creating a `Blueprint` object and adding to `BLUEPRINTS` list in config will not load this properly, but adding an import statement at the end of __init__.py will.
```python
from flask_appbuilder.baseviews import expose_api
from flask_appbuilder.security.decorators import has_access_api
from flask_babel import gettext as __
from superset import appbuilder
from superset.views.core import BaseSupersetView
import plaid.superset.datasource_helpers as dh
class MyView(BaseSupersetView):
@expose_api(name='api', url='/api/refresh', methods=['GET'])
@expose_api(name='api', url='/api/refresh/<project_id>', methods=['GET'])
@has_access_api
def refresh(self, project_id=None):
if project_id:
dh.sync_report_datasource(project_id)
else:
# Sync everything if no project ID specified.
dh.sync_report_datasources()
appbuilder.add_view_no_menu(Plaid)
appbuilder.add_link(
'Refresh',
label=__('Refresh'),
href='/plaid/api/refresh',
icon='fa-refresh',
category='Sources',
category_label=__('Sources'),
category_icon='fa-database')
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org