Chercher des enseignants déjà affectés sur la même date : trouver des doublons

Cas d’usage : on affecte des enseignants pour surveiller des examens sur certains créneaux.
On veut éviter d’attribuer un même enseignant sur 2 créneaux, donc on veut une formule qui permet d’afficher les enseignants qui ont déjà été affectés à un créneau.

Une solution : une formule qui affiche les profs en doublons / déjà affectés.

Voici une formule possible (il y a très probablement plus simple / mieux) :

# Lignes pour le même horaire
lignes_horaire = Attribution_salles.lookupRecords(horaires=$horaires)
agents = []

# On parcourt les mails des agents de chaque ligne
for l in lignes_horaire:
  for mail in l.agent.mail:
    # on crée la liste de tous les agents pour cet horaire
    agents.append(mail)

# Trouver les doublons
doublons = [x for x in agents if agents.count(x) > 1]
return list(set(doublons))  

Oh, en fait il nous faudrait juste une condition sur liste déroulante disant que si l’enseignant est déjà sur le créneau alors il n’apparaît pas dans la liste… imonit

1 « J'aime »

Boon c’était plus simple ainsi !

J’ai fait une colonne formule pour récupérer la liste des mails déjà présents dans la colonne « agent » :

Repartition.lookupRecords().agent.mail

Puis une condition sur liste déroulante :

choice.mail not in $liste_mails

Ainsi, quand on ajoute une entrée, on ne peut choisir que les mails qui ne sont pas déjà présents dans la liste :slight_smile:

Le petit défaut : la formule avec la liste de tous les mails est appliquée à toute la colonne - on ne peut pas la faire dans une autre table car la formule de la condition sur liste déroulante n’a pas accès aux autres tables

Merci Aude pour cette astuce !

Petite question: pourquoi tu ne filtres pas ton lookupRecords sur la session ?
Si les sessions sont à des horaires différentes, rien n’empêche l’inscription de la personne à cette session ?