Maxime Beauchemin
4dd1e80f4c
feat: Add "Trigger Now" functionality for Alerts & Reports
...
Add manual execution capability to Alerts & Reports CRUD interface with immediate trigger functionality.
- Add `/api/v1/report/{id}/execute` REST endpoint with proper RBAC
- Create `ExecuteReportScheduleNowCommand` following existing Command patterns
- Use `security_manager.raise_for_ownership()` for consistent permission checking
- Reuse existing `AsyncExecuteReportScheduleCommand` via Celery for execution
- Add `ReportScheduleExecuteResponseSchema` for structured API responses
- Add `ReportScheduleCeleryNotConfiguredError` for helpful Celery setup guidance
- Add "Trigger Now" (⚡ ) button to AlertReportList actions column
- Create `useExecuteReportSchedule` hook for API integration
- Implement per-button loading states with `executingIds` Set tracking
- Add success/error toast notifications with clear messaging
- Gate feature behind existing edit permissions (`allowEdit`)
- Add 5 comprehensive backend tests covering success, 404, 403, Celery errors, and feature disabled
- Detect Celery backend configuration issues with helpful error messages
- All tests passing with proper mocking and security validation
- One-click manual execution from CRUD list view
- Smart loading states preventing double-clicks
- Professional "Trigger Now" terminology throughout
- Proper error handling for missing Celery backend
- Maintains all existing security and permission patterns
Resolves common user need for immediate alert/report execution without waiting for scheduled cron jobs.
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-21 11:29:59 -07:00
Amin Ghadersohi
dced2f8564
feat: Add BaseDAO improvements and test reorganization ( #35018 )
...
Co-authored-by: bito-code-review[bot] <188872107+bito-code-review[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com >
2025-09-16 18:15:16 -07:00
Hugh A. Miles II
966e231f94
feat: Add Dashboard Filter Support for Alert Reports ( #32196 )
...
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
Co-authored-by: Hugh A Miles II <hugh@Mac.home >
2025-09-16 10:52:28 -04:00
Richard Fogaca Nienkotter
a66737cb05
feat(custom-tooltip): custom tooltip on deck.gl charts ( #34276 )
2025-09-16 17:11:19 +03:00
Maxime Beauchemin
088ecdd0bf
refactor: Enable G logging rules and comprehensive ruff improvements ( #35081 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-09-15 12:42:49 -07:00
Daniel Vaz Gaspar
a9fb853e3e
fix: Bump FAB to 5.X ( #33055 )
...
Co-authored-by: Joe Li <joe@preset.io >
2025-09-12 09:21:37 +01:00
catpineapple
9efb80dbf4
fix(tests): one of integration test in TestSqlaTableModel does not support MySQL "concat" ( #35007 )
...
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me >
2025-09-05 21:11:38 +03:00
Vitor Avila
ce74ae095d
feat: Use dashboard name for screenshot download ( #34988 )
2025-09-05 02:16:45 -03:00
Gabriel Torres Ruiz
0a75bac2a1
fix(error-handling): jinja2 error handling improvements ( #34803 )
2025-09-02 17:29:07 -04:00
Maxime Beauchemin
4695be5cc5
fix: complete theme management system import/export ( #34850 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-09-01 15:44:01 -07:00
Danylo Korostil
077724c2d2
feat(api): dataset read API uuid support ( #34836 )
2025-08-29 17:21:24 -07:00
Beto Dealmeida
cb24737825
feat(bigquery): show materialized views ( #34766 )
2025-08-26 11:21:43 -04:00
Maxime Beauchemin
47414e18d4
feat: Use DuckDB for examples data in Docker development environment ( #34831 )
...
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net >
2025-08-25 12:37:28 -07:00
Vitor Avila
471d9fe737
fix: Add dataset ID to file name on exports ( #34782 )
2025-08-25 14:54:27 -03:00
JUST.in DO IT
75af53dc3d
fix: customize column description limit size in db_engine_spec ( #34808 )
2025-08-22 10:00:39 -07:00
Elizabeth Thompson
695a20d009
fix: catch no table error ( #32640 )
2025-08-21 10:40:44 -07:00
Maxime Beauchemin
4683a0827d
feat(validation): Add SQL expression validation in popovers ( #34642 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-08-20 15:10:38 -07:00
Joe Li
9de1706baa
fix: Fix TypeError in Slice.get() method when using filter_by() with BinaryExpression ( #34769 )
...
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-08-20 11:22:54 -07:00
Danylo Korostil
31e2143c84
feat(api): Added uuid filed support to dataset, chart, dashboard API ( #29573 )
2025-08-18 13:05:16 -07:00
Daniel Vaz Gaspar
28788fd1fa
fix: centralize cache timeout -1 logic to prevent caching ( #34654 )
2025-08-18 08:45:20 +01:00
Mehmet Salih Yavuz
ecfb9f7d7c
fix(row_level_security): Correct api response code for update ( #34672 )
2025-08-13 23:51:10 +03:00
Le Xich Long
6d827cf905
fix(security): grant TableSchemaView to only sql_lab role ( #32340 )
2025-08-12 13:45:36 -07:00
Maxime Beauchemin
5309edf3a5
feat: Implement UI-based system theme administration ( #34560 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-08-12 13:27:48 -07:00
Đỗ Trọng Hải
1947d4da76
fix(daos/tag): prevent non-unique tags getting created along with unique ones ( #32405 )
...
Signed-off-by: hainenber <dotronghai96@gmail.com >
2025-08-12 13:21:42 -07:00
Maxime Beauchemin
246181a546
feat(docker): Add pytest support to docker-compose-light.yml ( #34373 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-08-06 00:17:50 -04:00
Mehmet Salih Yavuz
761daec53d
feat(timeshift): Add support for date range timeshifts ( #34375 )
2025-08-05 19:31:40 +03:00
Vitor Avila
49689eec6c
feat: Enable drilling in embedded ( #34319 )
2025-08-05 02:23:00 -03:00
Maxime Beauchemin
cb27d5fe8d
chore: proper current_app.config proxy usage ( #34345 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-07-31 19:27:42 -07:00
Maxime Beauchemin
e741a3167f
feat: add a theme CRUD page to manage themes ( #34182 )
...
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me >
2025-07-25 13:26:41 -07:00
Beto Dealmeida
b794b192d1
fix: return 422 on invalid SQL ( #34303 )
2025-07-24 16:40:56 -04:00
Maxime Beauchemin
3f8472ca7b
chore: move some rules from ruff -> pylint ( #34292 )
2025-07-24 09:40:49 -07:00
Ahmed Habeeb
43775e9373
fix(sqllab_export): manually encode CSV output to support utf-8-sig ( #34235 )
2025-07-23 18:44:56 -07:00
Maxime Beauchemin
2db8f809ba
fix: proper handling of boolean filters with snowflake ( #34199 )
...
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net >
2025-07-18 12:13:52 -07:00
Maxime Beauchemin
1958df6b83
fix: dataset endpoint /rowlevelsecurity/related/tables doesn't apply filters as expected ( #34192 )
2025-07-17 15:51:03 -07:00
Maxime Beauchemin
c42be77c25
feat(i18n): load language pack asynchronously ( #34119 )
2025-07-14 10:59:29 -07:00
Richard Fogaca Nienkotter
85034b9748
feat(deck-gl): Enable individual deck.gl layer selection in FilterScope tree ( #33769 )
...
Co-authored-by: richardfn <richard.fogaca@appsilon.com >
Co-authored-by: amaannawab923 <amaannawab923@gmail.com >
2025-07-08 18:37:47 +03:00
Vitor Avila
733f112142
fix: Support metric currency as dict during import ( #34080 )
2025-07-07 14:00:56 -03:00
Vitor Avila
a56d7252c2
fix: Consider default catalog when getting tables and view lists ( #33916 )
2025-06-26 13:55:10 -03:00
Mehmet Salih Yavuz
a13a590796
feat(User Registrations): Migrate user registrations fab view ( #33631 )
2025-06-25 14:26:21 +02:00
Maxime Beauchemin
dd129fa403
feat(theming): land Ant Design v5 overhaul — dynamic themes, real dark mode + massive styling refactor ( #31590 )
...
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com >
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com >
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me >
Co-authored-by: Geido <60598000+geido@users.noreply.github.com >
Co-authored-by: Alexandru Soare <37236580+alexandrusoare@users.noreply.github.com >
Co-authored-by: Damian Pendrak <dpendrak@gmail.com >
Co-authored-by: Pius Iniobong <67148161+payose@users.noreply.github.com >
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com >
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com >
2025-06-20 13:38:58 -07:00
Vitor Avila
86e7139245
fix: Dataset currency ( #33682 )
2025-06-09 22:47:14 -03:00
Beto Dealmeida
a26e1d822a
chore: remove sqlparse ( #33564 )
2025-06-04 19:31:41 -04:00
Enzo Martellucci
20519158d2
feat(UserInfo): Migrate User Info FAB to React ( #33620 )
2025-06-03 19:24:22 +02:00
Vitor Avila
cacf1e06d6
fix: Update dataset's last modified date from column/metric update ( #33626 )
2025-06-03 12:20:38 -03:00
Pat Buxton
2d26af25c1
feat: Python 3.12 support ( #33434 )
2025-06-02 10:00:37 -07:00
Beto Dealmeida
401ce56fa1
feat: use sqlglot to validate adhoc subquery ( #33560 )
2025-05-30 18:09:19 -04:00
Beto Dealmeida
cf315388f2
feat(sqllab): use sqlglot instead of sqlparse ( #33542 )
2025-05-30 17:08:19 -04:00
Beto Dealmeida
f219dc1794
chore: make DB syntax errors 400 ( #33619 )
2025-05-30 13:04:04 -04:00
Vitor Avila
ed20d2a917
fix(Security): Apply permissions to the AllEntities list/get_objects API endpoint ( #33577 )
2025-05-30 13:39:18 -03:00
Enzo Martellucci
deef923825
feat(Action Logs): Migrate Action Log FAB to React ( #33298 )
2025-05-28 14:08:00 +02:00