eduardogsilva.routerfleet/dashboard/views.py

54 lines
2.1 KiB
Python
Raw Normal View History

2024-03-10 21:50:12 -03:00
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from backup.models import BackupProfile
from backup_data.models import RouterBackup
from router_manager.models import Router, RouterGroup, RouterStatus, BackupSchedule, SSHKey
from integration_manager.models import ExternalIntegration
from user_manager.models import User
from django.conf import settings
from django.utils import timezone
from datetime import timedelta
2024-03-10 21:50:12 -03:00
import os
import shutil
def get_directory_statistics(directory_path):
total, used, free = shutil.disk_usage(directory_path)
# Convert to GB
total = total // (2 ** 30)
used = used // (2 ** 30)
free = free // (2 ** 30)
usage_percentage = (used / total) * 100
return {
"total_gb": total,
"used_gb": used,
"free_gb": free,
"usage_percentage": round(usage_percentage, 2)
}
2024-03-10 21:50:12 -03:00
@login_required
2024-03-10 21:50:12 -03:00
def view_dashboard(request):
context = {'page_title': 'Welcome to routerfleet'}
return render(request, 'dashboard/welcome.html', context=context)
@login_required
2024-03-10 21:50:12 -03:00
def view_status(request):
settings.MEDIA_ROOT
context = {
'page_title': 'Welcome to routerfleet',
'media_root_stats': get_directory_statistics(settings.MEDIA_ROOT),
'queue': RouterBackup.objects.filter(success=False, error=False).count(),
'success_backup_last_24h': RouterBackup.objects.filter(success=True, created__gte=timezone.now() - timedelta(days=1)).count(),
'error_backup_last_24h': RouterBackup.objects.filter(error=True, created__gte=timezone.now() - timedelta(days=1)).count(),
'router_count': Router.objects.filter(enabled=True).count(),
'router_online_count': RouterStatus.objects.filter(status_online=True, router__monitoring=True).count(),
'router_offline_count': RouterStatus.objects.filter(status_online=False, router__monitoring=True).count(),
'router_not_monitored_count': Router.objects.filter(enabled=True, monitoring=False).count(),
'routerfleet_version': settings.ROUTERFLEET_VERSION,
}
2024-03-10 21:50:12 -03:00
return render(request, 'dashboard/status.html', context=context)