2024-03-16 15:14:14 -03:00
|
|
|
from django.contrib import messages
|
2024-04-03 11:12:11 -03:00
|
|
|
from django.utils import timezone
|
2024-03-16 15:14:14 -03:00
|
|
|
from django.shortcuts import render, get_object_or_404, redirect
|
|
|
|
from django.contrib.auth.decorators import login_required
|
2024-04-03 11:12:11 -03:00
|
|
|
|
|
|
|
from backup_data.models import RouterBackup
|
2024-04-02 16:56:35 -03:00
|
|
|
from .models import Router, RouterGroup, RouterStatus, SSHKey, BackupSchedule
|
2024-03-16 18:03:01 -03:00
|
|
|
from .forms import RouterForm, RouterGroupForm, SSHKeyForm
|
2024-03-16 15:14:14 -03:00
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
def view_router_list(request):
|
2024-03-16 18:03:01 -03:00
|
|
|
router_list = Router.objects.all().order_by('name')
|
|
|
|
filter_group = None
|
|
|
|
if request.GET.get('filter_group'):
|
|
|
|
if request.GET.get('filter_group') == 'all':
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
filter_group = get_object_or_404(RouterGroup, uuid=request.GET.get('filter_group'))
|
|
|
|
router_list = router_list.filter(routergroup=filter_group)
|
|
|
|
|
|
|
|
if not filter_group and request.GET.get('filter_group') != 'all':
|
|
|
|
filter_group = RouterGroup.objects.filter(default_group=True).first()
|
2024-03-16 15:14:14 -03:00
|
|
|
context = {
|
|
|
|
'router_list': router_list,
|
|
|
|
'page_title': 'Router List',
|
2024-03-16 18:03:01 -03:00
|
|
|
'filter_group_list': RouterGroup.objects.all().order_by('name'),
|
|
|
|
'filter_group': filter_group,
|
2024-03-16 15:14:14 -03:00
|
|
|
}
|
|
|
|
return render(request, 'router_manager/router_list.html', context=context)
|
|
|
|
|
|
|
|
|
2024-03-28 13:13:44 -03:00
|
|
|
@login_required()
|
|
|
|
def view_router_details(request):
|
|
|
|
router = get_object_or_404(Router, uuid=request.GET.get('uuid'))
|
2024-04-02 16:56:35 -03:00
|
|
|
router_status, _ = RouterStatus.objects.get_or_create(router=router)
|
2024-03-28 13:13:44 -03:00
|
|
|
context = {
|
|
|
|
'router': router,
|
|
|
|
'router_status': router_status,
|
|
|
|
'router_backup_list': router.routerbackup_set.all().order_by('-created'),
|
|
|
|
'page_title': 'Router Details',
|
|
|
|
}
|
|
|
|
return render(request, 'router_manager/router_details.html', context=context)
|
|
|
|
|
2024-04-02 16:56:35 -03:00
|
|
|
|
2024-03-16 15:14:14 -03:00
|
|
|
@login_required()
|
|
|
|
def view_manage_router(request):
|
|
|
|
if request.GET.get('uuid'):
|
|
|
|
router = get_object_or_404(Router, uuid=request.GET.get('uuid'))
|
|
|
|
if request.GET.get('action') == 'delete':
|
|
|
|
if request.GET.get('confirmation') == 'delete':
|
|
|
|
router.delete()
|
|
|
|
messages.success(request, 'Router deleted successfully')
|
|
|
|
return redirect('router_list')
|
|
|
|
else:
|
|
|
|
messages.warning(request, 'Router not deleted|Invalid confirmation')
|
|
|
|
return redirect('router_list')
|
|
|
|
else:
|
|
|
|
router = None
|
|
|
|
|
|
|
|
form = RouterForm(request.POST or None, instance=router)
|
|
|
|
if form.is_valid():
|
|
|
|
form.save()
|
|
|
|
messages.success(request, 'Router saved successfully')
|
2024-04-02 16:56:35 -03:00
|
|
|
router_status, _ = RouterStatus.objects.get_or_create(router=form.instance)
|
|
|
|
BackupSchedule.objects.filter(router=form.instance).delete()
|
2024-03-16 15:14:14 -03:00
|
|
|
return redirect('router_list')
|
|
|
|
|
|
|
|
context = {
|
|
|
|
'form': form,
|
|
|
|
'page_title': 'Manage Router',
|
|
|
|
'instance': router
|
|
|
|
}
|
2024-03-16 18:03:01 -03:00
|
|
|
return render(request, 'generic_form.html', context=context)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required()
|
|
|
|
def view_router_group_list(request):
|
|
|
|
context = {
|
|
|
|
'router_group_list': RouterGroup.objects.all().order_by('name'),
|
|
|
|
'page_title': 'Router Group List',
|
|
|
|
}
|
|
|
|
return render(request, 'router_manager/router_group_list.html', context=context)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required()
|
|
|
|
def view_manage_router_group(request):
|
|
|
|
if request.GET.get('uuid'):
|
|
|
|
router_group = get_object_or_404(RouterGroup, uuid=request.GET.get('uuid'))
|
|
|
|
if request.GET.get('action') == 'delete':
|
|
|
|
if request.GET.get('confirmation') == 'delete':
|
|
|
|
router_group.delete()
|
|
|
|
messages.success(request, 'Router Group deleted successfully')
|
|
|
|
return redirect('router_group_list')
|
|
|
|
else:
|
|
|
|
messages.warning(request, 'Router Group not deleted|Invalid confirmation')
|
|
|
|
return redirect('router_group_list')
|
|
|
|
else:
|
|
|
|
router_group = None
|
|
|
|
|
|
|
|
form = RouterGroupForm(request.POST or None, instance=router_group)
|
|
|
|
if form.is_valid():
|
|
|
|
form.save()
|
|
|
|
messages.success(request, 'Router Group saved successfully')
|
|
|
|
return redirect('router_group_list')
|
|
|
|
|
|
|
|
context = {
|
|
|
|
'form': form,
|
|
|
|
'page_title': 'Manage Router Group',
|
|
|
|
'instance': router_group
|
|
|
|
}
|
|
|
|
return render(request, 'generic_form.html', context=context)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required()
|
|
|
|
def view_ssh_key_list(request):
|
|
|
|
context = {
|
|
|
|
'sshkey_list': SSHKey.objects.all().order_by('name'),
|
|
|
|
'page_title': 'SSH Key List',
|
|
|
|
}
|
|
|
|
return render(request, 'router_manager/sshkey_list.html', context=context)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required()
|
|
|
|
def view_manage_sshkey(request):
|
|
|
|
if request.GET.get('uuid'):
|
|
|
|
sshkey = get_object_or_404(SSHKey, uuid=request.GET.get('uuid'))
|
|
|
|
if request.GET.get('action') == 'delete':
|
|
|
|
if request.GET.get('confirmation') == 'delete':
|
|
|
|
sshkey.delete()
|
|
|
|
messages.success(request, 'SSH Key deleted successfully')
|
|
|
|
return redirect('ssh_keys_list')
|
|
|
|
else:
|
|
|
|
messages.warning(request, 'SSH Key not deleted|Invalid confirmation')
|
|
|
|
return redirect('ssh_keys_list')
|
|
|
|
else:
|
|
|
|
sshkey = None
|
|
|
|
|
|
|
|
form = SSHKeyForm(request.POST or None, instance=sshkey)
|
|
|
|
if form.is_valid():
|
|
|
|
form.save()
|
|
|
|
messages.success(request, 'SSH Key saved successfully')
|
|
|
|
return redirect('ssh_keys_list')
|
|
|
|
|
|
|
|
context = {
|
|
|
|
'form': form,
|
|
|
|
'page_title': 'Manage SSH Key',
|
|
|
|
'instance': sshkey
|
|
|
|
}
|
|
|
|
return render(request, 'generic_form.html', context=context)
|
2024-04-03 11:12:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
@login_required()
|
|
|
|
def view_create_instant_backup_task(request):
|
|
|
|
router = get_object_or_404(Router, uuid=request.GET.get('uuid'))
|
|
|
|
router_details_url = f'/router/details/?uuid={router.uuid}'
|
|
|
|
if RouterBackup.objects.filter(router=router, success=False, error=False).exists():
|
|
|
|
messages.warning(request, 'Backup task not created|Active router backup task already exists')
|
|
|
|
return redirect(router_details_url)
|
|
|
|
if router.routerstatus.backup_lock is not None:
|
|
|
|
messages.warning(request, 'Backup task not created|Router backup is currently locked')
|
|
|
|
return redirect(router_details_url)
|
|
|
|
if not router.backup_profile:
|
|
|
|
messages.warning(request, 'Backup task not created|Router has no backup profile')
|
|
|
|
return redirect(router_details_url)
|
|
|
|
|
|
|
|
router_backup = RouterBackup.objects.create(router=router, schedule_time=timezone.now(), schedule_type='instant')
|
|
|
|
router.routerstatus.backup_lock = router_backup.schedule_time
|
|
|
|
router.routerstatus.save()
|
|
|
|
messages.success(request, 'Backup task created successfully')
|
|
|
|
return redirect(router_details_url)
|
|
|
|
|