Add DashboardApiView
This commit is contained in:
		
							parent
							
								
									90b2896ded
								
							
						
					
					
						commit
						a963694fd0
					
				
							
								
								
									
										7
									
								
								shynet/api/urls.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								shynet/api/urls.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					from django.urls import path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from . import views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					urlpatterns = [
 | 
				
			||||||
 | 
					    path("dashboard/", views.DashboardApiView.as_view(), name="services"),
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@ -1,3 +1,29 @@
 | 
				
			|||||||
from django.shortcuts import render
 | 
					from django.http import JsonResponse
 | 
				
			||||||
 | 
					from django.db.models import Q
 | 
				
			||||||
 | 
					from django.db.models.query import QuerySet
 | 
				
			||||||
 | 
					from django.views.generic import View
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Create your views here.
 | 
					from dashboard.mixins import DateRangeMixin
 | 
				
			||||||
 | 
					from core.models import Service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .mixins import ApiTokenRequiredMixin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class DashboardApiView(ApiTokenRequiredMixin, DateRangeMixin, View):
 | 
				
			||||||
 | 
					    def get(self, request, *args, **kwargs):
 | 
				
			||||||
 | 
					        services = Service.objects.filter(
 | 
				
			||||||
 | 
					            Q(owner=request.user) | Q(collaborators__in=[request.user])
 | 
				
			||||||
 | 
					        ).distinct()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        start = self.get_start_date()
 | 
				
			||||||
 | 
					        end = self.get_end_date()
 | 
				
			||||||
 | 
					        services_data = [s.get_core_stats(start, end) for s in services]
 | 
				
			||||||
 | 
					        for service_data in services_data:
 | 
				
			||||||
 | 
					            for key, value in service_data.items():
 | 
				
			||||||
 | 
					                if isinstance(value, QuerySet):
 | 
				
			||||||
 | 
					                    service_data[key] = list(value)
 | 
				
			||||||
 | 
					            for key, value in service_data['compare'].items():
 | 
				
			||||||
 | 
					                if isinstance(value, QuerySet):
 | 
				
			||||||
 | 
					                    service_data['compare'][key] = list(value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return JsonResponse(data={'services': services_data})
 | 
				
			||||||
 | 
				
			|||||||
@ -25,4 +25,5 @@ urlpatterns = [
 | 
				
			|||||||
    path("dashboard/", include(("dashboard.urls", "dashboard"), namespace="dashboard")),
 | 
					    path("dashboard/", include(("dashboard.urls", "dashboard"), namespace="dashboard")),
 | 
				
			||||||
    path("healthz/", include("health_check.urls")),
 | 
					    path("healthz/", include("health_check.urls")),
 | 
				
			||||||
    path("", include(("core.urls", "core"), namespace="core")),
 | 
					    path("", include(("core.urls", "core"), namespace="core")),
 | 
				
			||||||
 | 
					    path("api/", include(("api.urls", "api"), namespace="api")),
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user