Ejemplo n.º 1
0
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