87 lines
No EOL
3.3 KiB
Python
87 lines
No EOL
3.3 KiB
Python
import uuid
|
|
from django.db import models
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.models import AbstractUser, AnonymousUser
|
|
|
|
|
|
class User(AbstractUser):
|
|
satellites = models.ManyToManyField("Satellite", related_name="users")
|
|
|
|
|
|
class Prediction(models.Model):
|
|
user = models.ForeignKey(get_user_model(
|
|
), on_delete=models.CASCADE, default=0, related_name='predictions')
|
|
satellite = models.ForeignKey(
|
|
'Satellite', on_delete=models.CASCADE, related_name='predictions', null=True)
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
request = models.JSONField(default=dict)
|
|
result = models.JSONField(default=dict)
|
|
|
|
|
|
class Satellite(models.Model):
|
|
user = models.ForeignKey(
|
|
get_user_model(), on_delete=models.CASCADE, default=0)
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
|
name = models.CharField(max_length=100)
|
|
metadata = models.JSONField(blank=True, default=dict)
|
|
image = models.ImageField(
|
|
upload_to='satellite_images/', blank=True, null=True)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
|
|
|
|
class TelemetryPacket(models.Model):
|
|
user = models.ForeignKey(
|
|
get_user_model(), on_delete=models.CASCADE, default=0)
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
|
satellite = models.ForeignKey(
|
|
Satellite, on_delete=models.CASCADE, related_name="telemetry")
|
|
timestamp = models.BigIntegerField() # unix time
|
|
lat = models.FloatField(default=0.0)
|
|
lon = models.FloatField(default=0.0)
|
|
alt = models.FloatField(default=0.0)
|
|
payload = models.JSONField(blank=True, default=dict)
|
|
raw_data = models.JSONField(blank=True, default=dict)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
|
|
|
|
class PreditctionTemplate(models.Model):
|
|
user = models.ForeignKey(
|
|
get_user_model(), on_delete=models.CASCADE, default=0)
|
|
name = models.CharField(max_length=100)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
template_data = models.JSONField(blank=True, default=dict)
|
|
is_default = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
unique_together = ('user', 'name')
|
|
|
|
|
|
class SavedPoint(models.Model):
|
|
user = models.ForeignKey(
|
|
get_user_model(), on_delete=models.CASCADE, default=0)
|
|
name = models.CharField(max_length=100)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
lat = models.FloatField(default=0.0)
|
|
lon = models.FloatField(default=0.0)
|
|
alt = models.FloatField(default=0.0)
|
|
is_default = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
unique_together = ('user', 'name')
|
|
|
|
|
|
class SavedRateProfile(models.Model):
|
|
user = models.ForeignKey(
|
|
get_user_model(), on_delete=models.CASCADE, default=0)
|
|
name = models.CharField(max_length=100)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
rate_profile_data = models.JSONField(blank=True, default=dict)
|
|
is_default = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
unique_together = ('user', 'name') |