39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
from django.contrib.gis.db import models
|
|
from django.contrib.auth import get_user_model
|
|
|
|
from uuid import uuid4
|
|
|
|
|
|
class GPSTrack(models.Model):
|
|
id = models.UUIDField(default=uuid4, primary_key=True)
|
|
user = models.ForeignKey(get_user_model(), models.CASCADE)
|
|
|
|
|
|
class GPSToken(models.Model):
|
|
name = models.CharField(max_length=128, null=True, blank=True)
|
|
track = models.ForeignKey(GPSTrack, models.CASCADE)
|
|
token = models.UUIDField(default=uuid4)
|
|
|
|
# Permissions
|
|
read = models.BooleanField(default=False)
|
|
write = models.BooleanField(default=False)
|
|
history = models.BooleanField(default=False)
|
|
|
|
|
|
class GPSPoint(models.Model):
|
|
track = models.ForeignKey(GPSTrack, models.CASCADE)
|
|
point = models.PointField()
|
|
timestamp = models.DateTimeField()
|
|
token = models.ForeignKey(GPSToken, models.SET_NULL, null=True)
|
|
|
|
# Optional additional information
|
|
battery = models.DecimalField(
|
|
max_digits=5, decimal_places=2, null=True, blank=True)
|
|
accuracy = models.DecimalField(
|
|
max_digits=64, decimal_places=32, null=True, blank=True)
|
|
speed = models.DecimalField(
|
|
max_digits=64, decimal_places=32, null=True, blank=True)
|
|
bearing = models.DecimalField(
|
|
max_digits=64, decimal_places=61, null=True, blank=True)
|
|
satellites = models.IntegerField(null=True, blank=True)
|
|
user_agent = models.TextField(null=True, blank=True)
|