def bulkCreateInvites(data: List[InvitationRow], cohort = None)->List[Invitation]: res = {"messages":[],"data":{"updated":0,"added":0}} for entry in data: try: User.objects.get(username = entry.email) except User.DoesNotExist: pass else: res["messages"].append(f"User {entry.email} already exists") continue try: invitation = Invitation.objects.get(email=entry.email) except Invitation.DoesNotExist: invitation = Invitation( email = entry.email ) invitation.save() res["data"]["added"]+=1 else: res["data"]["updated"]+=1 invitation.metadata = {"position":entry.position,"affiliation":entry.affiliation} countries = [] for cname in entry.countries: try: c = Country.objects.get(name=cname) except Country.DoesNotExist: res["messages"].append(f"Did not find country {cname} while creating invite for {entry.email}") else: countries.append(c) invitation.countries.set(countries) return res