yeni
This commit is contained in:
74
ssh_manager/system_settings.py
Normal file
74
ssh_manager/system_settings.py
Normal file
@ -0,0 +1,74 @@
|
||||
from django.db import models
|
||||
|
||||
class SystemSettings(models.Model):
|
||||
"""Sistem genel ayarları"""
|
||||
BACKUP_FREQUENCY_CHOICES = [
|
||||
('daily', 'Günlük'),
|
||||
('weekly', 'Haftalık'),
|
||||
('monthly', 'Aylık'),
|
||||
]
|
||||
|
||||
# Yedekleme ayarları
|
||||
backup_enabled = models.BooleanField(default=False, verbose_name="Otomatik Yedekleme Aktif")
|
||||
backup_frequency = models.CharField(max_length=10, choices=BACKUP_FREQUENCY_CHOICES, default='weekly', verbose_name="Yedekleme Sıklığı")
|
||||
backup_hour = models.IntegerField(default=3, verbose_name="Yedekleme Saati (0-23)")
|
||||
backup_minute = models.IntegerField(default=0, verbose_name="Yedekleme Dakikası (0-59)")
|
||||
backup_day_of_week = models.IntegerField(default=0, verbose_name="Haftanın Günü (0=Pazartesi, 6=Pazar)", null=True, blank=True)
|
||||
backup_day_of_month = models.IntegerField(default=1, verbose_name="Ayın Günü (1-31)", null=True, blank=True)
|
||||
|
||||
# Linux crontab komutu
|
||||
backup_crontab_expression = models.CharField(max_length=100, blank=True, null=True, verbose_name="Crontab İfadesi")
|
||||
|
||||
# Yedekleme dosya formatı - Her zaman sıkıştırılmış
|
||||
backup_format = models.CharField(max_length=10, default='tar.gz', verbose_name="Yedekleme Format")
|
||||
|
||||
# E-posta bildirim ayarları
|
||||
email_notifications = models.BooleanField(default=False, verbose_name="E-posta Bildirimleri")
|
||||
notification_email = models.EmailField(blank=True, null=True, verbose_name="Bildirim E-postası")
|
||||
|
||||
# S3 depolama ayarları (Vultr Object Storage)
|
||||
use_s3_storage = models.BooleanField(default=True, verbose_name="Vultr S3 Depolama", help_text="Tüm yedekler Vultr S3 depolama alanına aktarılır")
|
||||
s3_access_key = models.CharField(max_length=255, default='', verbose_name="Vultr S3 Erişim Anahtarı")
|
||||
s3_secret_key = models.CharField(max_length=255, default='', verbose_name="Vultr S3 Gizli Anahtar")
|
||||
s3_bucket_name = models.CharField(max_length=255, default='backups', verbose_name="Vultr S3 Bucket Adı")
|
||||
s3_region = models.CharField(max_length=50, default='ams', verbose_name="Vultr S3 Bölge")
|
||||
s3_endpoint = models.CharField(max_length=255, default='ams1.vultrobjects.com', verbose_name="Vultr S3 Endpoint")
|
||||
|
||||
# Son güncelleme zamanı
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
def __str__(self):
|
||||
return "Sistem Ayarları"
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
# Crontab ifadesini oluştur
|
||||
minute = self.backup_minute
|
||||
hour = self.backup_hour
|
||||
|
||||
if self.backup_frequency == 'daily':
|
||||
day_of_month = '*'
|
||||
month = '*'
|
||||
day_of_week = '*'
|
||||
elif self.backup_frequency == 'weekly':
|
||||
day_of_month = '*'
|
||||
month = '*'
|
||||
day_of_week = self.backup_day_of_week
|
||||
else: # monthly
|
||||
day_of_month = self.backup_day_of_month
|
||||
month = '*'
|
||||
day_of_week = '*'
|
||||
|
||||
self.backup_crontab_expression = f"{minute} {hour} {day_of_month} {month} {day_of_week}"
|
||||
|
||||
# S3 yedekleme zorunlu olduğu için her zaman kontrol et
|
||||
if not self.s3_access_key or not self.s3_secret_key or not self.s3_bucket_name:
|
||||
raise ValueError("Vultr S3 Erişim Anahtarı, Gizli Anahtar ve Bucket Adı alanları zorunludur!")
|
||||
|
||||
# S3 storage her zaman aktif
|
||||
self.use_s3_storage = True
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Sistem Ayarları"
|
||||
verbose_name_plural = "Sistem Ayarları"
|
||||
Reference in New Issue
Block a user