@@ -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,13 +84,15 @@ 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" )
9092 self .use_taskiq = ui .checkbox (
9193 "Taskiq" ,
9294 value = state .use_taskiq ,
95+ on_change = self ._update_taskiq_state ,
9396 ).classes ("w-full" )
9497 self .use_celery = (
9598 ui .checkbox ("Celery" )
@@ -121,6 +124,7 @@ def _build(self) -> None:
121124 self .use_redis = ui .checkbox (
122125 "Redis" ,
123126 value = state .use_redis ,
127+ on_change = self ._update_taskiq_state ,
124128 ).classes ("w-full" )
125129
126130 with ui .column ().classes ("w-full gap-2" ):
@@ -139,10 +143,24 @@ def _bind_state_to_ui(self) -> None:
139143 self .use_postgres .bind_value_to (state , "use_postgres" )
140144 self .use_alembic .bind_value_to (state , "use_alembic" )
141145 self .use_builtin_auth .bind_value_to (state , "use_builtin_auth" )
142- self .use_rabbitmq .bind_value_to (state , "use_rabbitmq" )
143- self .use_redis .bind_value_to (state , "use_redis" )
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+ )
144152 self .use_taskiq .bind_value_to (state , "use_taskiq" )
145153
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
163+
146164 def _handle_builtin_auth_change (self , event : ValueChangeEventArguments ) -> None :
147165 """Handle JWT Auth checkbox changes"""
148166 enabled = event .value
0 commit comments