added in router list checkbox to posible select multiple routers and create backup task

This commit is contained in:
petrunetworking 2025-01-31 01:31:41 +02:00
parent 9770555ebf
commit a730057a6b
3 changed files with 99 additions and 2 deletions

View file

@ -227,3 +227,48 @@ def view_create_instant_backup_task(request):
messages.success(request, 'Backup task created successfully')
return redirect(router_details_url)
@login_required()
def view_create_instant_backup_multiple_routers(request):
# Check user permissions
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=20).exists():
uuid = request.GET.get('uuid')
if uuid:
router_details_url = f'/router/details/?uuid={uuid}'
messages.warning(request, 'Sorry, you do not have permission to create instant backup. Please contact your system administrator if you believe this is an error.')
return redirect(router_details_url)
else:
messages.warning(request, 'Sorry, you do not have permission to create instant backup. Please contact your system administrator if you believe this is an error.')
return redirect('/router/list/')
# Get UUIDs from the request
uuids = request.GET.getlist('uuid') # Changed to getlist for multiple UUIDs
if not uuids:
messages.warning(request, 'At least one UUID is required for Create Backup Task')
return redirect('/router/list/')
# Loop through each UUID and process the backup
for uuid in uuids:
router = get_object_or_404(Router, uuid=uuid)
router_details_url = f'/router/details/?uuid={router.uuid}'
# Check for existing backup tasks
if RouterBackup.objects.filter(router=router, success=False, error=False).exists():
messages.warning(request, f'Backup task not created for {router.name}| Active router backup task already exists')
continue # Skip to the next router
if router.routerstatus.backup_lock is not None:
messages.warning(request, f'Backup task not created for {router.name}| Router backup is currently locked')
continue # Skip to the next router
if not router.backup_profile:
messages.warning(request, f'Backup task not created for {router.name}| Router has no backup profile')
continue # Skip to the next router
router_backup = RouterBackup.objects.create(router=router, schedule_time=timezone.now(), schedule_type='instant')
# Update backup lock status
router.routerstatus.backup_lock = router_backup.schedule_time
router.routerstatus.save()
messages.success(request, f'Backup task created successfully for {router.name}')
return redirect('/router/list/')