loko/streetup/panoramax/models.py
2026-07-22 14:48:40 +02:00

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