@@ -22,6 +22,7 @@ def __init__(self):
2222 super ().__init__ (value = True , elevated = False , bottom_corner = True )
2323 self ._build ()
2424 self ._bind_state_to_ui ()
25+ self ._update_taskiq_state ()
2526
2627 def _build (self ) -> None :
2728 with (
@@ -83,16 +84,16 @@ def _build(self) -> None:
8384 self .use_rabbitmq = ui .checkbox (
8485 "RabbitMQ" ,
8586 value = state .use_rabbitmq ,
87+ on_change = self ._update_taskiq_state ,
8688 ).classes ("w-full" )
8789
8890 with ui .column ().classes ("w-full gap-2" ):
8991 ui .label ("Task Queues" ).classes ("text-lg font-bold" )
90- self .use_taskiq = (
91- ui .checkbox ("Taskiq" )
92- .classes ("w-full" )
93- .tooltip ("Coming soon!" )
94- .set_enabled (False )
95- )
92+ self .use_taskiq = ui .checkbox (
93+ "Taskiq" ,
94+ value = state .use_taskiq ,
95+ on_change = self ._update_taskiq_state ,
96+ ).classes ("w-full" )
9697 self .use_celery = (
9798 ui .checkbox ("Celery" )
9899 .classes ("w-full" )
@@ -123,6 +124,7 @@ def _build(self) -> None:
123124 self .use_redis = ui .checkbox (
124125 "Redis" ,
125126 value = state .use_redis ,
127+ on_change = self ._update_taskiq_state ,
126128 ).classes ("w-full" )
127129
128130 with ui .column ().classes ("w-full gap-2" ):
@@ -141,7 +143,23 @@ def _bind_state_to_ui(self) -> None:
141143 self .use_postgres .bind_value_to (state , "use_postgres" )
142144 self .use_alembic .bind_value_to (state , "use_alembic" )
143145 self .use_builtin_auth .bind_value_to (state , "use_builtin_auth" )
144- self .use_rabbitmq .bind_value_to (state , "use_rabbitmq" )
146+ self .use_rabbitmq .bind_value_to (state , "use_rabbitmq" ).on (
147+ "change" , self ._update_taskiq_state
148+ )
149+ self .use_redis .bind_value_to (state , "use_redis" ).on (
150+ "change" , self ._update_taskiq_state
151+ )
152+ self .use_taskiq .bind_value_to (state , "use_taskiq" )
153+
154+ def _update_taskiq_state (self , * _ ) -> None :
155+ """Enable or disable Taskiq based on Redis and RabbitMQ."""
156+ self .use_taskiq .set_enabled (self .use_redis .value and self .use_rabbitmq .value )
157+ if (
158+ not (self .use_redis .value and self .use_rabbitmq .value )
159+ and self .use_taskiq .value
160+ ):
161+ self .use_taskiq .value = False
162+ state .use_taskiq = False
145163
146164 def _handle_builtin_auth_change (self , event : ValueChangeEventArguments ) -> None :
147165 """Handle JWT Auth checkbox changes"""
@@ -245,6 +263,7 @@ async def _create_project(self) -> None:
245263 state .use_builtin_auth = self .use_builtin_auth .value
246264 state .use_redis = self .use_redis .value
247265 state .use_rabbitmq = self .use_rabbitmq .value
266+ state .use_taskiq = self .use_taskiq .value
248267
249268 project_spec = state .get_project_spec ()
250269 await build_project (project_spec )
0 commit comments