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()})"