77 lines
3.7 KiB
Python
77 lines
3.7 KiB
Python
from django.db import models
|
|
|
|
#Create your models here.
|
|
|
|
class LocalBackup(models.Model):
|
|
backup_path = models.CharField(max_length=255, help_text="Specify the path in the server were the backup files should keep")
|
|
backup_media = models.BooleanField(blank=True, null=True)
|
|
backup_db = models.BooleanField(blank=True, null=True)
|
|
interval = models.BooleanField(blank=True, null=True)
|
|
fixed = models.BooleanField(blank=True, null=True)
|
|
seconds = models.IntegerField(blank=True, null=True)
|
|
hour = models.IntegerField(blank=True, null=True)
|
|
minute = models.IntegerField(blank=True, null=True)
|
|
active = models.BooleanField(default=False)
|
|
|
|
|
|
def save(self, *args, **kwargs):
|
|
# Check if there's an existing instance
|
|
if self.interval == False:
|
|
self.seconds = None
|
|
if self.fixed == False:
|
|
self.hour = None
|
|
self.minute = None
|
|
if LocalBackup.objects.exists():
|
|
# Get the existing instance
|
|
existing_instance = LocalBackup.objects.first()
|
|
# Update the fields of the existing instance with the new data
|
|
for field in self._meta.fields:
|
|
if field.name != 'id': # Avoid changing the primary key
|
|
setattr(existing_instance, field.name, getattr(self, field.name))
|
|
# Save the updated instance
|
|
super(LocalBackup, existing_instance).save(*args, **kwargs)
|
|
return existing_instance
|
|
else:
|
|
# If no existing instance, proceed with regular save
|
|
super(LocalBackup, self).save(*args, **kwargs)
|
|
return self
|
|
|
|
|
|
class GoogleDriveBackup(models.Model):
|
|
service_account_file = models.FileField(upload_to="gdrive_service_account_file",
|
|
verbose_name="Service Account File",
|
|
help_text="Make sure your file is in JSON format and contains your Google Service Account credentials")
|
|
gdrive_folder_id = models.CharField(max_length=255,
|
|
verbose_name="Gdrive Folder ID",
|
|
help_text="Shared Gdrive folder Id with access granted to Gmail service account. Enable full permissions for seamless connection.")
|
|
backup_media = models.BooleanField(blank=True, null=True)
|
|
backup_db = models.BooleanField(blank=True, null=True)
|
|
interval = models.BooleanField(blank=True, null=True)
|
|
fixed = models.BooleanField(blank=True, null=True)
|
|
seconds = models.IntegerField(blank=True, null=True)
|
|
hour = models.IntegerField(blank=True, null=True)
|
|
minute = models.IntegerField(blank=True, null=True)
|
|
active = models.BooleanField(default=False)
|
|
|
|
|
|
def save(self, *args, **kwargs):
|
|
# Check if there's an existing instance
|
|
if self.interval == False:
|
|
self.seconds = None
|
|
if self.fixed == False:
|
|
self.hour = None
|
|
self.minute = None
|
|
if GoogleDriveBackup.objects.exists():
|
|
# Get the existing instance
|
|
existing_instance = GoogleDriveBackup.objects.first()
|
|
# Update the fields of the existing instance with the new data
|
|
for field in self._meta.fields:
|
|
if field.name != 'id': # Avoid changing the primary key
|
|
setattr(existing_instance, field.name, getattr(self, field.name))
|
|
# Save the updated instance
|
|
super(GoogleDriveBackup, existing_instance).save(*args, **kwargs)
|
|
return existing_instance
|
|
else:
|
|
# If no existing instance, proceed with regular save
|
|
super(GoogleDriveBackup, self).save(*args, **kwargs)
|
|
return self |