sql_lab.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. # pylint: disable=C,R,W
  2. from flask import g, redirect
  3. from flask_appbuilder import expose
  4. from flask_appbuilder.models.sqla.interface import SQLAInterface
  5. from flask_babel import gettext as __
  6. from flask_babel import lazy_gettext as _
  7. from superset import appbuilder
  8. from superset.models.sql_lab import Query, SavedQuery
  9. from .base import BaseSupersetView, DeleteMixin, SupersetModelView
  10. class QueryView(SupersetModelView):
  11. datamodel = SQLAInterface(Query)
  12. list_title = _('List Query')
  13. show_title = _('Show Query')
  14. add_title = _('Add Query')
  15. edit_title = _('Edit Query')
  16. list_columns = ['user', 'database', 'status', 'start_time', 'end_time']
  17. label_columns = {
  18. 'user': _('User'),
  19. 'database': _('Database'),
  20. 'status': _('Status'),
  21. 'start_time': _('Start Time'),
  22. 'end_time': _('End Time'),
  23. }
  24. appbuilder.add_view(
  25. QueryView,
  26. 'Queries',
  27. label=__('Queries'),
  28. category='Manage',
  29. category_label=__('Manage'),
  30. icon='fa-search')
  31. class SavedQueryView(SupersetModelView, DeleteMixin):
  32. datamodel = SQLAInterface(SavedQuery)
  33. list_title = _('List Saved Query')
  34. show_title = _('Show Saved Query')
  35. add_title = _('Add Saved Query')
  36. edit_title = _('Edit Saved Query')
  37. list_columns = [
  38. 'label', 'user', 'database', 'schema', 'description',
  39. 'modified', 'pop_tab_link']
  40. show_columns = [
  41. 'id', 'label', 'user', 'database',
  42. 'description', 'sql', 'pop_tab_link']
  43. search_columns = ('label', 'user', 'database', 'schema', 'changed_on')
  44. add_columns = ['label', 'database', 'description', 'sql']
  45. edit_columns = add_columns
  46. base_order = ('changed_on', 'desc')
  47. label_columns = {
  48. 'label': _('Label'),
  49. 'user': _('User'),
  50. 'database': _('Database'),
  51. 'description': _('Description'),
  52. 'modified': _('Modified'),
  53. 'end_time': _('End Time'),
  54. 'pop_tab_link': _('Pop Tab Link'),
  55. 'changed_on': _('Changed on'),
  56. }
  57. def pre_add(self, obj):
  58. obj.user = g.user
  59. def pre_update(self, obj):
  60. self.pre_add(obj)
  61. class SavedQueryViewApi(SavedQueryView):
  62. show_columns = ['label', 'db_id', 'schema', 'description', 'sql']
  63. add_columns = show_columns
  64. edit_columns = add_columns
  65. appbuilder.add_view_no_menu(SavedQueryViewApi)
  66. appbuilder.add_view_no_menu(SavedQueryView)
  67. appbuilder.add_link(
  68. __('Saved Queries'),
  69. href='/sqllab/my_queries/',
  70. icon='fa-save',
  71. category='SQL Lab')
  72. class SqlLab(BaseSupersetView):
  73. """The base views for Superset!"""
  74. @expose('/my_queries/')
  75. def my_queries(self):
  76. """Assigns a list of found users to the given role."""
  77. return redirect(
  78. '/savedqueryview/list/?_flt_0_user={}'.format(g.user.id))
  79. appbuilder.add_view_no_menu(SqlLab)