2018-01-21 17:43:13 +01:00
|
|
|
import datetime
|
|
|
|
|
|
|
|
from mpwo_api import db
|
|
|
|
|
|
|
|
|
|
|
|
class Sport(db.Model):
|
|
|
|
__tablename__ = "sports"
|
|
|
|
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
|
|
|
label = db.Column(db.String(50), unique=True, nullable=False)
|
|
|
|
activities = db.relationship('Activity',
|
|
|
|
lazy=True,
|
|
|
|
backref=db.backref('sports', lazy='joined'))
|
|
|
|
|
|
|
|
def __repr__(self):
|
|
|
|
return self.label
|
|
|
|
|
|
|
|
def __init__(self, label):
|
|
|
|
self.label = label
|
|
|
|
|
|
|
|
|
|
|
|
class Activity(db.Model):
|
|
|
|
__tablename__ = "activities"
|
|
|
|
id = db.Column(
|
|
|
|
db.Integer,
|
|
|
|
primary_key=True,
|
|
|
|
autoincrement=True)
|
|
|
|
user_id = db.Column(
|
|
|
|
db.Integer,
|
|
|
|
db.ForeignKey('users.id'),
|
|
|
|
nullable=False)
|
|
|
|
sport_id = db.Column(
|
|
|
|
db.Integer,
|
|
|
|
db.ForeignKey('sports.id'),
|
|
|
|
nullable=False)
|
|
|
|
gpx = db.Column(db.String(255), nullable=True)
|
2018-01-28 11:28:47 +01:00
|
|
|
creation_date = db.Column(
|
|
|
|
db.DateTime, default=datetime.datetime.utcnow)
|
|
|
|
modification_date = db.Column(
|
|
|
|
db.DateTime, onupdate=datetime.datetime.utcnow)
|
2018-01-21 17:43:13 +01:00
|
|
|
activity_date = db.Column(db.DateTime, nullable=False)
|
|
|
|
duration = db.Column(db.Interval, nullable=False)
|
|
|
|
pauses = db.Column(db.Interval, nullable=True)
|
|
|
|
moving = db.Column(db.Interval, nullable=True)
|
|
|
|
distance = db.Column(db.Numeric(5, 2), nullable=True)
|
|
|
|
min_alt = db.Column(db.Numeric(5, 2), nullable=True)
|
|
|
|
max_alt = db.Column(db.Numeric(5, 2), nullable=True)
|
|
|
|
descent = db.Column(db.Numeric(5, 2), nullable=True)
|
|
|
|
ascent = db.Column(db.Numeric(5, 2), nullable=True)
|
|
|
|
max_speed = db.Column(db.Numeric(5, 2), nullable=True)
|
|
|
|
ave_speed = db.Column(db.Numeric(5, 2), nullable=True)
|
|
|
|
|
|
|
|
def __str__(self):
|
2018-05-01 21:26:17 +02:00
|
|
|
return str(self.sport_id) + \
|
2018-01-21 17:43:13 +01:00
|
|
|
" - " + self.activity_date.strftime('%Y-%m-%d')
|
|
|
|
|
2018-01-21 19:45:13 +01:00
|
|
|
def __init__(self, user_id, sport_id, activity_date, duration):
|
2018-01-21 17:43:13 +01:00
|
|
|
self.user_id = user_id
|
|
|
|
self.sport_id = sport_id
|
|
|
|
self.activity_date = activity_date
|
2018-01-21 19:45:13 +01:00
|
|
|
self.duration = duration
|
2018-05-01 21:26:17 +02:00
|
|
|
|
|
|
|
def serialize(self):
|
|
|
|
return {
|
|
|
|
"id": self.id,
|
|
|
|
"user_id": self.user_id,
|
|
|
|
"sport_id": self.sport_id,
|
|
|
|
"creation_date": self.creation_date,
|
|
|
|
"modification_date": self.modification_date,
|
|
|
|
"activity_date": self.activity_date,
|
|
|
|
"duration": self.duration.total_seconds(),
|
|
|
|
"pauses": self.pauses.total_seconds(),
|
|
|
|
"moving": self.moving.total_seconds(),
|
|
|
|
"distance": float(self.distance),
|
|
|
|
"min_alt": float(self.min_alt),
|
|
|
|
"max_alt": float(self.max_alt),
|
|
|
|
"descent": float(self.descent),
|
|
|
|
"ascent": float(self.ascent),
|
|
|
|
"max_speed": float(self.max_speed),
|
|
|
|
"ave_speed": float(self.ave_speed)
|
|
|
|
}
|