def get(self, request): connected_consoleports = ConsolePort.objects.restrict( request.user, 'view').prefetch_related('_path').filter( _path__destination_id__isnull=False) connected_powerports = PowerPort.objects.restrict( request.user, 'view').prefetch_related('_path').filter( _path__destination_id__isnull=False) connected_interfaces = Interface.objects.restrict( request.user, 'view').prefetch_related('_path').filter( _path__destination_id__isnull=False, pk__lt=F('_path__destination_id')) # Report Results report_content_type = ContentType.objects.get(app_label='extras', model='report') report_results = JobResult.objects.filter( obj_type=report_content_type, status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES).defer( 'data')[:10] stats = { # Organization 'site_count': Site.objects.restrict(request.user, 'view').count(), 'location_count': Location.objects.restrict(request.user, 'view').count(), 'tenant_count': Tenant.objects.restrict(request.user, 'view').count(), # DCIM 'rack_count': Rack.objects.restrict(request.user, 'view').count(), 'devicetype_count': DeviceType.objects.restrict(request.user, 'view').count(), 'device_count': Device.objects.restrict(request.user, 'view').count(), 'interface_connections_count': connected_interfaces.count(), 'cable_count': Cable.objects.restrict(request.user, 'view').count(), 'console_connections_count': connected_consoleports.count(), 'power_connections_count': connected_powerports.count(), 'powerpanel_count': PowerPanel.objects.restrict(request.user, 'view').count(), 'powerfeed_count': PowerFeed.objects.restrict(request.user, 'view').count(), # IPAM 'vrf_count': VRF.objects.restrict(request.user, 'view').count(), 'aggregate_count': Aggregate.objects.restrict(request.user, 'view').count(), 'prefix_count': Prefix.objects.restrict(request.user, 'view').count(), 'ipaddress_count': IPAddress.objects.restrict(request.user, 'view').count(), 'vlan_count': VLAN.objects.restrict(request.user, 'view').count(), # Circuits 'provider_count': Provider.objects.restrict(request.user, 'view').count(), 'circuit_count': Circuit.objects.restrict(request.user, 'view').count(), # Secrets 'secret_count': Secret.objects.restrict(request.user, 'view').count(), # Virtualization 'cluster_count': Cluster.objects.restrict(request.user, 'view').count(), 'virtualmachine_count': VirtualMachine.objects.restrict(request.user, 'view').count(), } changelog = ObjectChange.objects.restrict(request.user, 'view').prefetch_related( 'user', 'changed_object_type') # Check whether a new release is available. (Only for staff/superusers.) new_release = None if request.user.is_staff or request.user.is_superuser: latest_release, release_url = get_latest_release() if isinstance(latest_release, version.Version): current_version = version.parse(settings.VERSION) if latest_release > current_version: new_release = { 'version': str(latest_release), 'url': release_url, } return render( request, self.template_name, { 'search_form': SearchForm(), 'stats': stats, 'report_results': report_results, 'changelog': changelog[:15], 'new_release': new_release, })
def get(self, request): connected_consoleports = ConsolePort.objects.filter( connected_endpoint__isnull=False) connected_powerports = PowerPort.objects.filter( _connected_poweroutlet__isnull=False) connected_interfaces = Interface.objects.filter( _connected_interface__isnull=False, pk__lt=F('_connected_interface')) cables = Cable.objects.all() stats = { # Organization 'site_count': Site.objects.count(), 'tenant_count': Tenant.objects.count(), # DCIM 'rack_count': Rack.objects.count(), 'devicetype_count': DeviceType.objects.count(), 'device_count': Device.objects.count(), 'interface_connections_count': connected_interfaces.count(), 'cable_count': cables.count(), 'console_connections_count': connected_consoleports.count(), 'power_connections_count': connected_powerports.count(), 'powerpanel_count': PowerPanel.objects.count(), 'powerfeed_count': PowerFeed.objects.count(), # IPAM 'vrf_count': VRF.objects.count(), 'aggregate_count': Aggregate.objects.count(), 'prefix_count': Prefix.objects.count(), 'ipaddress_count': IPAddress.objects.count(), 'vlan_count': VLAN.objects.count(), # Circuits 'provider_count': Provider.objects.count(), 'circuit_count': Circuit.objects.count(), # Secrets 'secret_count': Secret.objects.count(), # Virtualization 'cluster_count': Cluster.objects.count(), 'virtualmachine_count': VirtualMachine.objects.count(), } # Check whether a new release is available. (Only for staff/superusers.) new_release = None if request.user.is_staff or request.user.is_superuser: latest_release, release_url = get_latest_release() if isinstance(latest_release, version.Version): current_version = version.parse(settings.VERSION) if latest_release > current_version: new_release = { 'version': str(latest_release), 'url': release_url, } return render( request, self.template_name, { 'search_form': SearchForm(), 'stats': stats, 'report_results': ReportResult.objects.order_by('-created')[:10], 'changelog': ObjectChange.objects.prefetch_related( 'user', 'changed_object_type')[:15], 'new_release': new_release, })