2015-09-01 03:31:25 +00:00
|
|
|
from django.db import models
|
|
|
|
# Create your models here.
|
2015-09-01 04:47:56 +00:00
|
|
|
from django.contrib.auth.models import User
|
2015-09-01 03:31:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
class Track(models.Model):
|
2015-09-01 04:47:56 +00:00
|
|
|
user = models.ForeignKey(User, blank=False)
|
2015-09-01 03:31:25 +00:00
|
|
|
start = models.DateTimeField()
|
|
|
|
name = models.CharField(max_length=1024, blank=False)
|
|
|
|
description = models.TextField(blank=True)
|
|
|
|
|
|
|
|
@property
|
|
|
|
def finish(self):
|
2015-09-01 04:47:56 +00:00
|
|
|
return self.segment_set.order_by("-time")[0].finish
|
2015-09-01 03:31:25 +00:00
|
|
|
|
2015-09-01 05:05:34 +00:00
|
|
|
def __str__(self):
|
|
|
|
return "[{user}] '{name}' from {start} to {finish}".format(
|
|
|
|
user=self.user.username,
|
|
|
|
name=self.name,
|
|
|
|
start=self.start,
|
|
|
|
finish=self.finish)
|
|
|
|
|
2015-09-01 04:50:22 +00:00
|
|
|
|
2015-09-01 03:56:40 +00:00
|
|
|
class Segment(models.Model):
|
|
|
|
track = models.ForeignKey(Track)
|
2015-09-01 04:47:56 +00:00
|
|
|
time = models.DateTimeField()
|
|
|
|
number = models.IntegerField(default=1)
|
|
|
|
|
|
|
|
@property
|
|
|
|
def finish(self):
|
|
|
|
return self.point_set.order_by("-time")[0].time
|
2015-09-01 03:31:25 +00:00
|
|
|
|
2015-09-01 05:05:34 +00:00
|
|
|
def __str__(self):
|
|
|
|
return "'{name}' Segment #{number} at {tme}".format(
|
|
|
|
name=self.track.name,
|
|
|
|
number=self.number,
|
|
|
|
tme=self.time)
|
|
|
|
|
2015-09-01 04:50:22 +00:00
|
|
|
|
2015-09-01 03:31:25 +00:00
|
|
|
class Point(models.Model):
|
|
|
|
time = models.DateTimeField()
|
2015-09-01 05:05:34 +00:00
|
|
|
latitude = models.DecimalField(max_digits=10, decimal_places=6)
|
|
|
|
longitude = models.DecimalField(max_digits=10, decimal_places=6)
|
2015-09-01 03:31:25 +00:00
|
|
|
elevation = models.DecimalField(max_digits=20, decimal_places=2)
|
2015-09-01 03:56:40 +00:00
|
|
|
segment = models.ForeignKey(Segment)
|
2015-09-01 05:05:34 +00:00
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return "'{name}' ({lat},{lon}) -> {alt} on {time}".format(
|
|
|
|
lat=self.latitude,
|
|
|
|
lon=self.longitude,
|
|
|
|
alt=self.elevation,
|
|
|
|
time=self.time,
|
|
|
|
name=self.segment.track.name)
|