def create_conference(schedule: Schedule): conference = schedule.conference() input = { 'conference': { 'acronym': conference['acronym'], 'title': conference['title'], 'startDate': conference['start'], 'endDate': conference['end'], 'daysUsingId': { 'create': [{ 'index': day['index'], 'startDate': day['day_start'], 'endDate': day['day_end'] } for day in schedule.days()] }, 'roomsUsingId': { 'create': [{ 'name': room, } for room in schedule.rooms()] } } } #print(json.dumps(input, indent=2)) try: result = client.execute(gql(''' mutation createConferenceAndDaysAndRooms($input: CreateConferenceInput!) { createConference(input: $input) { conference { id rooms { nodes { guid name } } } } } '''), variable_values={'input': input}) return result['createConference'] except TransportQueryError as e: # raise exception, error is not 'conference already exists' if 'duplicate key value violates unique constraint "conferences_acronym_key"' != e.errors[ 0]['message']: raise e # conference already exists, so try to get required infos result = client.execute( gql(''' query getConferenceAndRooms($acronym: String!) { conference: conferenceByAcronym(acronym: $acronym) { id rooms { nodes { guid name } } } } '''), variable_values={'acronym': conference['acronym']}) return result
def create_conference(schedule: Schedule): conference = schedule.conference() for room in schedule.rooms(): add_room(room)