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()