Files
hostpanel/ssh_manager/system_settings.py
ilkeral f4ee7a2d0b yeni
2025-08-08 07:24:25 +03:00

75 lines
3.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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ı"