34 lines
1.8 KiB
Python
34 lines
1.8 KiB
Python
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
|
|
class PanoramaxUpload(models.Model):
|
|
STATUS_CHOICES = [
|
|
('pending', 'En attente'),
|
|
('processing', 'En cours de traitement'),
|
|
('completed', 'Terminé'),
|
|
('failed', 'Échoué'),
|
|
]
|
|
|
|
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Utilisateur")
|
|
title = models.CharField(max_length=255, verbose_name="Titre/Description")
|
|
upload_type = models.CharField(max_length=50, verbose_name="Type d'upload") # video, folder, zip, files
|
|
|
|
uploaded_file = models.FileField(upload_to='panoramax_uploads/%Y/%m/%d/', null=True, blank=True, verbose_name="Fichier principal")
|
|
gpx_file = models.FileField(upload_to='panoramax_uploads/%Y/%m/%d/gpx/', null=True, blank=True, verbose_name="Fichier GPX")
|
|
|
|
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending', verbose_name="Statut")
|
|
progress = models.IntegerField(default=0, verbose_name="Progression (%)")
|
|
error_message = models.TextField(null=True, blank=True, verbose_name="Message d'erreur")
|
|
upload_set_id = models.CharField(max_length=100, null=True, blank=True, verbose_name="ID de session Panoramax")
|
|
associated_collections = models.JSONField(default=list, blank=True, verbose_name="Collections associées")
|
|
camera_offset = models.IntegerField(default=0, verbose_name="Offset d'orientation caméra (degrés)")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="Date de création")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="Date de mise à jour")
|
|
|
|
class Meta:
|
|
verbose_name = "Upload Panoramax"
|
|
verbose_name_plural = "Uploads Panoramax"
|
|
ordering = ['-created_at']
|
|
|
|
def __str__(self):
|
|
return f"{self.title} ({self.get_status_display()})"
|