def __process_record(self, tcx, activity_id, record_number, point): root_logger.debug("Processing record: %r (%d)", point, record_number) if not GarminDB.ActivityRecords.s_exists(self.garmin_act_db_session, { 'activity_id': activity_id, 'record': record_number }): record = { 'activity_id': activity_id, 'record': record_number, 'timestamp': tcx.get_point_time(point), 'hr': tcx.get_point_hr(point), 'altitude': tcx.get_point_altitude(point).meters_or_feet( measurement_system=self.measurement_system), 'speed': tcx.get_point_speed(point).kph_or_mph( measurement_system=self.measurement_system) } loc = tcx.get_point_loc(point) if loc is not None: record.update({ 'position_lat': loc.lat_deg, 'position_long': loc.long_deg }) self.garmin_act_db_session.add(GarminDB.ActivityRecords(**record))
def _write_record_entry(self, fit_file, message_dict): # We don't get record data from multiple sources so we don't need to coellesce data in the DB. # It's fastest to just write the new data out if it doesn't currently exist. activity_id = GarminDB.File.id_from_path(fit_file.filename) if not GarminDB.ActivityRecords.s_exists(self.garmin_act_db_session, { 'activity_id': activity_id, 'record': self.record }): record = { 'activity_id': activity_id, 'record': self.record, 'timestamp': self.__get_field_value(message_dict, 'timestamp'), 'position_lat': self.__get_field_value(message_dict, 'position_lat'), 'position_long': self.__get_field_value(message_dict, 'position_long'), 'distance': self.__get_field_value(message_dict, 'distance'), 'cadence': self.__get_field_value(message_dict, 'cadence'), 'hr': self.__get_field_value(message_dict, 'heart_rate'), 'alititude': self.__get_field_value(message_dict, 'altitude'), 'speed': self.__get_field_value(message_dict, 'speed'), 'temperature': self.__get_field_value(message_dict, 'temperature'), } self.garmin_act_db_session.add(GarminDB.ActivityRecords(**record)) self.record += 1
def _write_record_entry(self, fit_file, message_fields, record_num): # We don't get record data from multiple sources so we don't need to coellesce data in the DB. # It's fastest to just write the new data out if it doesn't currently exist. activity_id = GarminDB.File.id_from_path(fit_file.filename) plugin_record = self._plugin_dispatch('write_record_entry', self.garmin_act_db_session, fit_file, activity_id, message_fields, record_num) if not GarminDB.ActivityRecords.s_exists(self.garmin_act_db_session, {'activity_id' : activity_id, 'record' : record_num}): record = { 'activity_id' : activity_id, 'record' : record_num, 'timestamp' : fit_file.utc_datetime_to_local(message_fields.timestamp), 'position_lat' : self._get_field_value(message_fields, 'position_lat'), 'position_long' : self._get_field_value(message_fields, 'position_long'), 'distance' : self._get_field_value(message_fields, 'distance'), 'cadence' : self._get_field_value(message_fields, 'cadence'), 'hr' : self._get_field_value(message_fields, 'heart_rate'), 'rr' : self._get_field_value(message_fields, 'respiration_rate'), 'altitude' : self._get_field_value(message_fields, 'altitude'), 'speed' : self._get_field_value(message_fields, 'speed'), 'temperature' : self._get_field_value(message_fields, 'temperature'), } record.update(plugin_record) root_logger.info("_write_record_entry activity_id %s, record %s doesn't exist", activity_id, record_num) self.garmin_act_db_session.add(GarminDB.ActivityRecords(**record))