def create_event(self): """ Returns an instance of Event class :return: """ center_location = self.test_data["events"]["centerLocation"] coords = [center_location["lat"], center_location["long"]] event_data = json.loads( self.test_data["events"]["eventData"]["eventData"]) e = Event( category=event_data["category"], datetime=time.time() * 1000, description=event_data["description"], local_assistance=event_data["local_assistance"], location={ u'coords': GeoPoint(event_data["location"]["coords"]["latitude"], event_data["location"]["coords"]["longitude"]), u"geohash": encode(coords), }, public={ 'share': event_data["public"]["share"], 'view': event_data["public"]["view"] }, reported_by={'original': { 'anonymous': event_data["anonymous"] }}, title=event_data["title"], images=[{ 'isNsfw': False, 'isTrusted': True, 'uuid': 'images__image__uuid' }]) return e
def handle(self, *args, **options): # Event.objects.all().delete() # Match.objects.all().delete() # return client = GraphQLClient('https://vk-hackathon-gateway.trbna.com/ru/graphql/') for match_id in match_ids: query = base_query % (match_id, 'match_started', 'statMatchStarted') response = client.execute(query) print(response) response = json.loads(response) match_data = response.get('data', {}).get('stat_match') home_team_data = match_data.get('home') away_team_data = match_data.get('away') start_time = match_data.get('scheduledAt') status = match_data.get('status') minute = match_data.get('currentMinute') home_team, created = Team.objects.update_or_create( global_id=home_team_data.get('team', {}).get('id'), defaults=dict( name=home_team_data.get('team', {}).get('name'), logo = home_team_data.get('team', {}).get('logo').get('url'), ) ) away_team, created = Team.objects.update_or_create( global_id=away_team_data.get('team', {}).get('id'), defaults=dict( name=away_team_data.get('team', {}).get('name'), logo = away_team_data.get('team', {}).get('logo').get('url'), ) ) match, created = Match.objects.update_or_create( global_id=match_id, defaults=dict( start_datetime=start_time, status=status, minute=minute, home_team_score = home_team_data.get('score'), away_team_score = away_team_data.get('score'), home_team=home_team, away_team=away_team ) ) for event_type in event_types: query = base_query % (match_id, event_type['code'], event_type['model']) result = client.execute(query) print(result) data = json.loads(result) events = data.get('data', {}).get('stat_match').get('events', []) for event_data in events: time = event_data.get('time') code = event_type['code'] if code is 'match_started': match.real_start_datetime = time match.save() continue try: event = Event.objects.get(global_id=event_data.get('id')) except Event.DoesNotExist: event = Event(global_id=event_data.get('id')) event.type = code event.time = time event.team = event_data.get('team') event.match = match event.match_time = event_data.get('value', {}).get('matchTime') event.player_name = event_data.get('value', {}).get('player', {}).get('lastName') event.player_avatar = event_data.get('value', {}).get('player', {}).get('avatar', {}).get('main') event.home_score = event_data.get('value', {}).get('homeScore') event.away_score = event_data.get('value', {}).get('awayScore') event.method_score = event_data.get('value', {}).get('methodScore') event.save()