[ADD] HORILLA BACKUP: Module for PSQL database backup to Google Drive (beta)
This commit is contained in:
187
horilla_backup/views.py
Normal file
187
horilla_backup/views.py
Normal file
@@ -0,0 +1,187 @@
|
||||
from django.shortcuts import render, redirect
|
||||
from horilla.decorators import (
|
||||
hx_request_required,
|
||||
login_required,
|
||||
manager_can_enter,
|
||||
owner_can_enter,
|
||||
permission_required,
|
||||
)
|
||||
from .forms import *
|
||||
from django.contrib import messages
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from .scheduler import *
|
||||
from .gdrive import *
|
||||
from .pgdump import *
|
||||
from .zip import *
|
||||
from django.db import connection
|
||||
|
||||
|
||||
# @login_required
|
||||
# @permission_required("backup.add_localbackup")
|
||||
# def local_setup(request):
|
||||
# """
|
||||
# function used to setup local backup.
|
||||
|
||||
# Parameters:
|
||||
# request (HttpRequest): The HTTP request object.
|
||||
|
||||
# Returns:
|
||||
# GET : return local backup setup template
|
||||
# POST : return settings
|
||||
# """
|
||||
# form = LocalBackupSetupForm()
|
||||
# show = False
|
||||
# active = False
|
||||
# if LocalBackup.objects.exists():
|
||||
# form = LocalBackupSetupForm(instance=LocalBackup.objects.first())
|
||||
# show = True
|
||||
# active = LocalBackup.objects.first().active
|
||||
# if request.method == "POST":
|
||||
# form = LocalBackupSetupForm(request.POST, request.FILES)
|
||||
# if form.is_valid():
|
||||
# form.save()
|
||||
# stop_backup_job()
|
||||
# messages.success(request, _("Local backup automation setup updated."))
|
||||
# return redirect("local")
|
||||
# return render(request, "backup/local_setup_form.html", {"form": form, "show":show, "active":active})
|
||||
|
||||
|
||||
# @login_required
|
||||
# @permission_required("backup.change_localbackup")
|
||||
# def local_Backup_stop_or_start(request):
|
||||
# """
|
||||
# function used to stop or start local backup.
|
||||
|
||||
# Parameters:
|
||||
# request (HttpRequest): The HTTP request object.
|
||||
|
||||
# Returns:
|
||||
# GET : return local backup setup template
|
||||
# POST : return settings
|
||||
# """
|
||||
# if LocalBackup.objects.exists():
|
||||
# local_backup = LocalBackup.objects.first()
|
||||
# if local_backup.active == True:
|
||||
# local_backup.active = False
|
||||
# stop_backup_job()
|
||||
# message = "Local Backup Automation Stopped Successfully."
|
||||
# else:
|
||||
# local_backup.active = True
|
||||
# start_backup_job()
|
||||
# message = "Local Backup Automation Started Successfully."
|
||||
# local_backup.save()
|
||||
# messages.success(request, _(message))
|
||||
# return redirect("local")
|
||||
|
||||
|
||||
# @login_required
|
||||
# @permission_required("backup.delete_localbackup")
|
||||
# def local_Backup_delete(request):
|
||||
# """
|
||||
# function used to delete local backup.
|
||||
|
||||
# Parameters:
|
||||
# request (HttpRequest): The HTTP request object.
|
||||
|
||||
# Returns:
|
||||
# GET : return local backup setup template
|
||||
# POST : return settings
|
||||
# """
|
||||
# if LocalBackup.objects.exists():
|
||||
# local_backup = LocalBackup.objects.first()
|
||||
# local_backup.delete()
|
||||
# stop_backup_job()
|
||||
# messages.success(request, _("Local Backup Automation Removed Successfully."))
|
||||
# return redirect("local")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("backup.add_localbackup")
|
||||
def gdrive_setup(request):
|
||||
"""
|
||||
function used to setup gdrive backup.
|
||||
|
||||
Parameters:
|
||||
request (HttpRequest): The HTTP request object.
|
||||
|
||||
Returns:
|
||||
GET : return gdrive backup setup template
|
||||
POST : return gdrive backup update template
|
||||
"""
|
||||
form = GdriveBackupSetupForm()
|
||||
show = False
|
||||
active = False
|
||||
if connection.vendor != "postgresql":
|
||||
return render(request, "backup/404.html")
|
||||
if GoogleDriveBackup.objects.exists():
|
||||
instance = GoogleDriveBackup.objects.first()
|
||||
form = GdriveBackupSetupForm(instance=instance)
|
||||
show = True
|
||||
active = GoogleDriveBackup.objects.first().active
|
||||
if request.method == "POST":
|
||||
form = GdriveBackupSetupForm(request.POST, request.FILES, instance=instance)
|
||||
if form.is_valid():
|
||||
google_drive = form.save()
|
||||
google_drive.active = False
|
||||
google_drive.save()
|
||||
stop_gdrive_backup_job()
|
||||
messages.success(request, _("gdrive backup automation setup updated."))
|
||||
return redirect("gdrive")
|
||||
return render(request, "backup/gdrive_setup_form.html", {"form": form, "show":show, "active":active})
|
||||
|
||||
|
||||
if request.method == "POST":
|
||||
form = GdriveBackupSetupForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
messages.success(request, _("gdrive backup automation setup Created."))
|
||||
return redirect("gdrive")
|
||||
return render(request, "backup/gdrive_setup_form.html", {"form": form, "show":show, "active":active})
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("backup.change_localbackup")
|
||||
def gdrive_Backup_stop_or_start(request):
|
||||
"""
|
||||
function used to stop or start gdrive backup.
|
||||
|
||||
Parameters:
|
||||
request (HttpRequest): The HTTP request object.
|
||||
|
||||
Returns:
|
||||
GET : return gdrive backup setup template
|
||||
POST : return gdrive backup update template
|
||||
"""
|
||||
if GoogleDriveBackup.objects.exists():
|
||||
gdive_backup = GoogleDriveBackup.objects.first()
|
||||
if gdive_backup.active == True:
|
||||
gdive_backup.active = False
|
||||
stop_gdrive_backup_job()
|
||||
message = "Gdrive Backup Automation Stopped Successfully."
|
||||
else:
|
||||
gdive_backup.active = True
|
||||
start_gdrive_backup_job()
|
||||
message = "Gdrive Backup Automation Started Successfully."
|
||||
gdive_backup.save()
|
||||
messages.success(request, _(message))
|
||||
return redirect("gdrive")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("backup.delete_localbackup")
|
||||
def gdrive_Backup_delete(request):
|
||||
"""
|
||||
function used to delete gdrive backup.
|
||||
|
||||
Parameters:
|
||||
request (HttpRequest): The HTTP request object.
|
||||
|
||||
Returns:
|
||||
GET : return gdrive backup setup template
|
||||
"""
|
||||
if GoogleDriveBackup.objects.exists():
|
||||
gdrive_backup = GoogleDriveBackup.objects.first()
|
||||
gdrive_backup.delete()
|
||||
stop_gdrive_backup_job()
|
||||
messages.success(request, _("Gdrive Backup Automation Removed Successfully."))
|
||||
return redirect("gdrive")
|
||||
Reference in New Issue
Block a user