Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
def create_conference(schedule: Schedule):
    conference = schedule.conference()

    for room in schedule.rooms():
        add_room(room)