def submit_match_scouting_data(request):
    if request.method != "POST":
        raise Http404
    else:
        data = str(request.POST.get('data'))
        print(data)
        matches = json.loads(data)
        
        eventsStorage = []
        
        errors = []

        for match in matches:

            if match:

                #
                # All variables that are NOT in separate database tables
                #

                if match['practice_scouting']:
                    try:
                        location = Location.objects.filter(name="TEST")[0]
                    except Location.DoesNotExist and IndexError:
                        Location(name="TEST").save()
                        location = Location.objects.filter(name="TEST")[0]

                else:
                    try:
                        location = Location.objects.get(id=request.session.get('location_id'))
                    except Location.DoesNotExist:
                        pass

                match_object = Match(scout=request.user,
                                     location=location,
                                     scout_name=request.user.first_name + " " + request.user.last_name[:1],
                                     scout_team_number=request.user.userprofile.team.team_number)

                # TELEOPERATED
                if match['events']:
                    events = match.pop('events')
                    
                    for x in range(len(events)):
                        event = events[x]
                        event_object = Event(ev_num=x,team_number=match['team_number'])
                        for event_attr in event:
                            setattr(event_object, event_attr, event.get(event_attr)) #todo: data validation. just in case.
                        eventsStorage.append(event_object)
                
                for attr in match:
                    setattr(match_object, attr, match.get(attr))
                print(str(match_object.__dict__))
                try:
                    match_object.save()
                    for event in eventsStorage:
                        event.match=match_object
                        event.save()
                except (IntegrityError, ValueError, DataError, decimal.InvalidOperation) as e:
                    try:
                        errors.append({
                            'team_number': match.get('prematch').get('team_number'),
                            'match_number': match.get('prematch').get('match_number'),
                            'error':str(e)
                            })
                    except AttributeError:
                        errors.append({
                            'team_number': "Unknown",
                            'match_number': "Unknown",
                            'error':str(e)
                        })
                

        if len(errors) != 0:
            return JsonResponse(errors, status=400, safe=False)
        else:
            return HttpResponse(status=200)