Files
ihrm/horilla_backup/models.py

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