def get_all_invites_for_pair(confirming, being_confirmed, active=True):
     # this method returns all invitations that involve BOTH members of a student pair
     return Invitation.query(
         ndb.OR(Invitation.invitee == confirming.key, Invitation.invitee == being_confirmed.key),
         ndb.OR(Invitation.invitor == being_confirmed.key, Invitation.invitor == confirming.key),
         Invitation.active == active,
     ).fetch()
 def get_open_invitations_for_pair_for_assign(confirming, being_confirmed, assign_num):
     return Invitation.query(
         ndb.OR(Invitation.invitee == confirming.key, Invitation.invitee == being_confirmed.key),
         ndb.OR(Invitation.invitor == being_confirmed.key, Invitation.invitor == confirming.key),
         Invitation.assignment_number == assign_num,
         Invitation.active == True
     )
 def get_all_invitations_involving_students_in_pair(confirming, being_confirmed, assign_num, active=True):
     # this method returns all invitations that involve AT LEAST ONE member of a student pair
     return Invitation.query(
         ndb.OR(
                 ndb.OR(
                     Invitation.invitor == confirming.key, 
                     Invitation.invitor == being_confirmed.key),
                 ndb.OR(
                     Invitation.invitee == confirming.key,
                     Invitation.invitee == being_confirmed.key)),
         Invitation.assignment_number == assign_num,
         Invitation.active == active
     )
 def get_all_invitations_involving_student(confirming):
     return Invitation.query(
         ndb.OR(
             Invitation.invitor == confirming.key, 
             Invitation.invitee == confirming.key),
         )
 def get_recvd_invites_by_student_and_assign(student, assign_num, active=True):
     return Invitation.query(
         Invitation.invitee == student.key,
         Invitation.assignment_number == assign_num,
         Invitation.active == active
     )