def _process_json(self, json_data):
     activity_id = json_data['activityId']
     event = GarminConnectEnums.Event.from_json(json_data)
     sport, sub_sport = GarminConnectEnums.get_summary_sport(json_data)
     activity = {
         'activity_id': activity_id,
         'name': json_data.get('activityName'),
         'description': self._get_field(json_data, 'description'),
         'type': event.name,
         'sport': sport.name,
         'sub_sport': sub_sport.name,
         'laps': self._get_field(json_data, 'lapCount'),
     }
     activity.update(self._process_common(json_data))
     GarminDB.Activities.s_insert_or_update(self.garmin_act_db_session,
                                            activity,
                                            ignore_none=True)
     self._call_process_func(sport.name, sub_sport, activity_id, json_data)
     return 1
 def _process_json(self, json_data):
     activity_id = json_data['activityId']
     distance = self._get_field_obj(json_data, 'distance', Fit.Distance.from_meters)
     ascent = self._get_field_obj(json_data, 'elevationGain', Fit.Distance.from_meters)
     descent = self._get_field_obj(json_data, 'elevationLoss', Fit.Distance.from_meters)
     avg_speed = self._get_field_obj(json_data, 'averageSpeed', Fit.Speed.from_mps)
     max_speed = self._get_field_obj(json_data, 'maxSpeed', Fit.Speed.from_mps)
     max_temperature = self._get_field_obj(json_data, 'maxTemperature', Fit.Temperature.from_celsius)
     min_temperature = self._get_field_obj(json_data, 'minTemperature', Fit.Temperature.from_celsius)
     event = GarminConnectEnums.Event.from_json(json_data)
     sport, sub_sport = GarminConnectEnums.get_summary_sport(json_data)
     activity = {
         'activity_id'               : activity_id,
         'name'                      : json_data.get('activityName'),
         'description'               : self._get_field(json_data, 'description'),
         'type'                      : event.name,
         'sport'                     : sport.name,
         'sub_sport'                 : sub_sport.name,
         'start_time'                : dateutil.parser.parse(self._get_field(json_data, 'startTimeLocal'), ignoretz=True),
         'elapsed_time'              : Fit.conversions.secs_to_dt_time(self._get_field(json_data, 'elapsedDuration', int)),
         'moving_time'               : Fit.conversions.secs_to_dt_time(self._get_field(json_data, 'movingDuration', int)),
         'start_lat'                 : self._get_field(json_data, 'startLatitude', float),
         'start_long'                : self._get_field(json_data, 'startLongitude', float),
         'stop_lat'                  : self._get_field(json_data, 'endLatitude', float),
         'stop_long'                 : self._get_field(json_data, 'endLongitude', float),
         'distance'                  : distance.kms_or_miles(self.measurement_system),
         'laps'                      : self._get_field(json_data, 'lapCount'),
         'avg_hr'                    : self._get_field(json_data, 'averageHR', float),
         'max_hr'                    : self._get_field(json_data, 'maxHR', float),
         'calories'                  : self._get_field(json_data, 'calories', float),
         'avg_speed'                 : avg_speed.kph_or_mph(self.measurement_system),
         'max_speed'                 : max_speed.kph_or_mph(self.measurement_system),
         'ascent'                    : ascent.meters_or_feet(self.measurement_system),
         'descent'                   : descent.meters_or_feet(self.measurement_system),
         'max_temperature'           : max_temperature.c_or_f(self.measurement_system),
         'min_temperature'           : min_temperature.c_or_f(self.measurement_system),
         'training_effect'           : self._get_field(json_data, 'aerobicTrainingEffect', float),
         'anaerobic_training_effect' : self._get_field(json_data, 'anaerobicTrainingEffect', float),
     }
     GarminDB.Activities.s_insert_or_update(self.garmin_act_db_session, activity, ignore_none=True)
     self._call_process_func(sport.name, sub_sport, activity_id, json_data)
     return 1