def get(self, *args, **kwargs): profile = self.request.user.get_profile() has_perm = profile.has_perm if not has_perm(Perm.read_device_info_reports): return HttpResponseForbidden( "You don't have permission to see reports.") if 'start' in self.request.GET: self.form = DateRangeForm(self.request.GET) else: self.form = DateRangeForm( initial={ 'start': datetime.date.today() - datetime.timedelta(days=30), 'end': datetime.date.today(), }) if self.form.is_valid(): self.ventures = profile.perm_ventures( Perm.read_device_info_reports).filter( db.Q(parent=None) | db.Q(parent__parent=None), show_in_ralph=True).order_by('path') start = self.form.cleaned_data['start'] end = self.form.cleaned_data['end'] total_cloud_cost = get_total_cost( HistoryCost.objects.filter( device__model__type=DeviceType.cloud_server.id), start, end) for venture in self.ventures: query = HistoryCost.objects.filter( db.Q(venture=venture) | db.Q(venture__parent=venture) | db.Q(venture__parent__parent=venture) | db.Q(venture__parent__parent__parent=venture) | db.Q(venture__parent__parent__parent__parent=venture) ).exclude(device__deleted=True) venture.total = get_total_cost(query, start, end) (venture.count, venture.count_now, devices) = get_total_count(query, start, end) venture.core_count = get_total_cores(devices, start, end) venture.virtual_core_count = get_total_virtual_cores( devices, start, end) cloud_cost = get_total_cost( query.filter( device__model__type=DeviceType.cloud_server.id), start, end) venture.cloud_use = (cloud_cost or 0) / total_cloud_cost * 100 else: self.ventures = Venture.objects.none() if self.request.GET.get('export') == 'csv': return self.export_csv() return super(ReportVentures, self).get(*args, **kwargs)
def get(self, *args, **kwargs): if 'start' in self.request.GET: self.form = DateRangeForm(self.request.GET) if not self.form.is_valid(): messages.error(self.request, "Invalid date range") else: initial = { 'start': datetime.date.today() - datetime.timedelta(days=30), 'end': datetime.date.today(), } self.form = DateRangeForm(initial) self.form.is_valid() self.set_venture() has_perm = self.request.user.get_profile().has_perm if not has_perm(Perm.list_devices_financial, self.venture if self.venture and self.venture != '*' else None): return HttpResponseForbidden( "You don't have permission to see this.") return super(VenturesVenture, self).get(*args, **kwargs)
def get(self, *args, **kwargs): profile = self.request.user.get_profile() has_perm = profile.has_perm if not has_perm(Perm.read_device_info_reports): return HttpResponseForbidden( "You don't have permission to see reports.") if 'start' in self.request.GET: self.form = DateRangeForm(self.request.GET) else: self.form = DateRangeForm( initial={ 'start': datetime.date.today() - datetime.timedelta(days=30), 'end': datetime.date.today(), }) if self.form.is_valid(): self.ventures = profile.perm_ventures( Perm.read_device_info_reports).filter( db.Q(parent=None) | db.Q(parent__parent=None), show_in_ralph=True).order_by('path') for venture in self.ventures: (venture.total, venture.count, venture.count_now) = total_cost_count( HistoryCost.objects.filter( db.Q(venture=venture) | db.Q(venture__parent=venture) | db.Q(venture__parent__parent=venture) | db.Q(venture__parent__parent__parent=venture) | db.Q(venture__parent__parent__parent__parent=venture )).distinct(), self.form.cleaned_data['start'], self.form.cleaned_data['end'], ) else: self.ventures = Venture.objects.none() if self.request.GET.get('export') == 'csv': return self.export_csv() return super(ReportVentures, self).get(*args, **kwargs)
def get(self, *args, **kwargs): self.venture_data = [] self.task_in_progress = False profile = self.request.user.get_profile() if 'start' in self.request.GET: self.form = DateRangeForm(self.request.GET) else: self.form = DateRangeForm( initial={ 'start': datetime.date.today() - datetime.timedelta(days=30), 'end': datetime.date.today(), }) self.extra_types = list( VentureExtraCostType.objects.annotate( cost_count=db.Count('ventureextracost')).filter( cost_count__gt=0).order_by('name')) if self.form.is_valid(): self.ventures = profile.perm_ventures( Perm.read_device_info_reports).filter( db.Q(parent=None) | db.Q(parent__parent=None), show_in_ralph=True).values_list( 'id', flat=True, ).order_by('path') start = self.form.cleaned_data['start'] end = self.form.cleaned_data['end'] if self.request.GET.get('invalidate-cache') == 'true': self.invalidate_data( start, end, self.ventures, self.extra_types, ) return HttpResponseRedirect( _get_after_report_invalidation_link( self.request, 'invalidate-cache', ), ) self.venture_data = self.get_data( start, end, self.ventures, self.extra_types, ) if self.venture_data is None: self.task_in_progress = True messages.info( self.request, "Report processing in progress. Please wait...", ) else: self.ventures = Venture.objects.none() self.venture_data = [] if (self.request.GET.get('export') == 'csv' and self.venture_data is not None): return make_csv_response( data=self.export_csv(self.venture_data, self.extra_types), filename='ReportVentures.csv', ) return super(ReportVentures, self).get(*args, **kwargs)