Files
ihrm/horilla_backup/views.py

196 lines
6.0 KiB
Python
Raw Normal View History

2025-02-14 10:01:07 +05:30
from django.contrib import messages
from django.db import connection
from django.shortcuts import redirect, render
from django.utils.translation import gettext_lazy as _
from horilla.decorators import (
hx_request_required,
login_required,
manager_can_enter,
owner_can_enter,
permission_required,
)
2025-02-14 10:01:07 +05:30
from .forms import *
from .gdrive import *
from .pgdump import *
2025-02-14 10:01:07 +05:30
from .scheduler import *
from .zip import *
# @login_required
# @permission_required("backup.add_localbackup")
# def local_setup(request):
2025-02-14 10:01:07 +05:30
# """
# 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():
2025-02-14 10:01:07 +05:30
# form.save()
# stop_backup_job()
# messages.success(request, _("Local backup automation setup updated."))
2025-02-14 10:01:07 +05:30
# return redirect("local")
# return render(request, "backup/local_setup_form.html", {"form": form, "show":show, "active":active})
2025-02-14 10:01:07 +05:30
# @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.
2025-02-14 10:01:07 +05:30
# 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):
2025-02-14 10:01:07 +05:30
"""
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
2025-02-14 10:01:07 +05:30
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():
2025-02-14 10:01:07 +05:30
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")
2025-02-14 10:01:07 +05:30
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():
2025-02-14 10:01:07 +05:30
form.save()
messages.success(request, _("gdrive backup automation setup Created."))
2025-02-14 10:01:07 +05:30
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.
2025-02-14 10:01:07 +05:30
Returns:
GET : return gdrive backup setup template
POST : return gdrive backup update template
"""
2025-02-14 10:01:07 +05:30
if GoogleDriveBackup.objects.exists():
gdive_backup = GoogleDriveBackup.objects.first()
2025-02-14 10:01:07 +05:30
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."))
2025-02-14 10:01:07 +05:30
return redirect("gdrive")