update manager, welcome and status page.

This commit is contained in:
Eduardo Silva 2024-04-04 14:25:16 -03:00
parent 6a53c8bc97
commit 7332bca96e
17 changed files with 313 additions and 7 deletions

View file

@ -1,6 +1,32 @@
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
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)
}
@login_required
def view_dashboard(request):
@ -10,5 +36,18 @@ def view_dashboard(request):
@login_required
def view_status(request):
context = {'page_title': 'Welcome to routerfleet'}
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,
}
return render(request, 'dashboard/status.html', context=context)