from django.db import models from django.contrib.auth import get_user_model User = get_user_model() class DatabaseBackup(models.Model): """Veritabanı yedekleme kayıtlarını tutar""" STATUS_CHOICES = [ ('pending', 'Bekliyor'), ('in_progress', 'İşleniyor'), ('completed', 'Tamamlandı'), ('failed', 'Başarısız'), ] BACKUP_TYPE_CHOICES = [ ('manual', 'Manuel'), ('automatic', 'Otomatik'), ] name = models.CharField(max_length=255, verbose_name='Yedek Adı') file_path = models.CharField(max_length=500, verbose_name='Dosya Yolu', blank=True, null=True) file_size = models.BigIntegerField(verbose_name='Dosya Boyutu (bytes)', null=True, blank=True) status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending', verbose_name='Durum') backup_type = models.CharField(max_length=20, choices=BACKUP_TYPE_CHOICES, default='manual', verbose_name='Yedek Tipi') created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='Oluşturan') created_at = models.DateTimeField(auto_now_add=True, verbose_name='Oluşturulma Tarihi') completed_at = models.DateTimeField(null=True, blank=True, verbose_name='Tamamlanma Tarihi') error_message = models.TextField(blank=True, null=True, verbose_name='Hata Mesajı') notes = models.TextField(blank=True, null=True, verbose_name='Notlar') class Meta: verbose_name = 'Veritabanı Yedeği' verbose_name_plural = 'Veritabanı Yedekleri' ordering = ['-created_at'] def __str__(self): return f"{self.name} - {self.get_status_display()}" def get_file_size_display(self): """Dosya boyutunu okunabilir formatta döndürür""" if not self.file_size: return "N/A" size = self.file_size for unit in ['B', 'KB', 'MB', 'GB']: if size < 1024.0: return f"{size:.2f} {unit}" size /= 1024.0 return f"{size:.2f} TB"