Forráskód Böngészése

Usuarios ya inscritos o en lista de espera no aparecen en la selección de acompañante.

Celestino Rey 11 hónapja
szülő
commit
19946bc436
1 módosított fájl, 21 hozzáadás és 3 törlés
  1. 21 3
      src/eventos/forms.py

+ 21 - 3
src/eventos/forms.py

@@ -25,9 +25,18 @@ class ReservaForm(forms.ModelForm):
 
         # Solo permitir elegir acompañante si el evento es para parejas
         if evento and evento.para_parejas:
+            # Excluir usuarios que ya tienen reserva o están en lista de espera
+            usuarios_excluidos = set(
+                Reserva.objects.filter(evento=evento).values_list('usuario_id', flat=True)
+            ) | set(
+                ListaEspera.objects.filter(evento=evento).values_list('usuario_id', flat=True)
+            )
+
             # Ordenar alfabéticamente por nombre y excluir al propio usuario
             self.fields['acompanante'].queryset = (
-                User.objects.exclude(id=usuario.id)
+                User.objects.exclude(id__in=usuarios_excluidos)
+                .exclude(id=usuario.id)
+                .filter(is_active=True)
                 .order_by('nombre')
             )
 
@@ -61,7 +70,7 @@ class ListaEsperaForm(forms.ModelForm):
     class Meta:
         model = ListaEspera
         fields = ['acompanante']
-        
+
     def __init__(self, *args, **kwargs):
         evento = kwargs.pop('evento', None)
         usuario = kwargs.pop('usuario', None)
@@ -69,9 +78,18 @@ class ListaEsperaForm(forms.ModelForm):
 
         # Solo permitir elegir acompañante si el evento es para parejas
         if evento and evento.para_parejas:
+            # Excluir usuarios que ya tienen reserva o están en lista de espera
+            usuarios_excluidos = set(
+                Reserva.objects.filter(evento=evento).values_list('usuario_id', flat=True)
+            ) | set(
+                ListaEspera.objects.filter(evento=evento).values_list('usuario_id', flat=True)
+            )
+
             # Ordenar alfabéticamente por nombre y excluir al propio usuario
             self.fields['acompanante'].queryset = (
-                User.objects.exclude(id=usuario.id)
+                User.objects.exclude(id__in=usuarios_excluidos)
+                .exclude(id=usuario.id)
+                .filter(is_active=True)
                 .order_by('nombre')
             )