This commit is contained in:
2025-03-18 18:24:14 +01:00
parent cb92b0c84f
commit da313ce205
6 changed files with 146 additions and 35 deletions

View File

@@ -32,14 +32,6 @@ class UserAdmin(BaseUserAdmin):
return filesizeformat(obj.size_used)
size_used.short_description = "Size used"
def save_formset(self, request, form, formset, change):
print("save_formset")
return super().save_formset(request, form, formset, change)
def save_model(self, request, obj, form, change):
print("save_model")
return super().save_model(request, obj, form, change)
@admin.register(Invitation)

View File

@@ -8,6 +8,7 @@ from rest_framework.viewsets import ModelViewSet, GenericViewSet
from rest_framework import mixins
from rest_framework.decorators import action
from rest_framework.response import Response
import shutil
from .models import User, FriendRequest, Invitation
from .forms import RegisterForm
@@ -92,6 +93,29 @@ class UserViewSet(mixins.RetrieveModelMixin,
return Response({"success": True, "message": f"The friend {friend.username} successfully removed"})
return Response({"success": False, "message": f"error"})
@action(methods=["get"], detail=False)
def user_stats(self, request):
stats = User.objects.filter(id=request.user.id).aggregate(
total_size=Sum("torrents__size"),
total_torrent=Count("torrents"),
total_shared_torrent=Count("torrents_shares")
)
disk_usage = shutil.disk_usage("/")
return Response({
"torrents_size": stats["total_size"],
"torrents_len": stats["total_torrent"],
"torrent_len_shared": stats["total_shared_torrent"],
"torrents_total_len": stats["total_torrent"] + stats["total_shared_torrent"],
"user_max_size": request.user.max_size,
"user_usage_percent": (stats["total_size"] / request.user.max_size) * 100,
"disk_total": disk_usage.total,
"disk_used": disk_usage.used,
"disk_free": disk_usage.free,
"disk_usage_percent": (disk_usage.used / disk_usage.total) * 100,
})
class FriendRequestViewSet(mixins.ListModelMixin,
mixins.DestroyModelMixin,