def get(self, *args, **kwargs): if 'year' in self.request.GET: self.form = PredefinedDateRangeForm(self.request.GET) if not self.form.is_valid(): messages.error(self.request, "Invalid date range") else: initial = { 'year': datetime.date.today().year, 'month': datetime.date.today().month, } self.form = PredefinedDateRangeForm(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)
class VenturesVenture(SidebarVentures, Base): template_name = 'ui/ventures-venture.html' def get(self, *args, **kwargs): if 'year' in self.request.GET: self.form = PredefinedDateRangeForm(self.request.GET) if not self.form.is_valid(): messages.error(self.request, "Invalid date range") else: initial = { 'year': datetime.date.today().year, 'month': datetime.date.today().month, } self.form = PredefinedDateRangeForm(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_context_data(self, **kwargs): ret = super(VenturesVenture, self).get_context_data(**kwargs) start = None end = None if self.venture is None or not self.form.is_valid(): items = [] cost_data = [] count_data = [] else: if self.venture == '': query = HistoryCost.objects.filter(venture=None) elif self.venture == '*': query = HistoryCost.objects.exclude(venture=None) else: ventures = [] _venture_children(self.venture, ventures) query = HistoryCost.objects.filter( venture__in=ventures ) start, end = self.form.get_range() query = HistoryCost.filter_span(start, end, query) items = _get_summaries(query.all(), start, end, True, self.venture) cost_data = [] count_data = [] one_day = datetime.timedelta(days=1) datapoints = set(dp for dp, in query.values_list('start').distinct()) datapoints |= set(dp for dp, in query.values_list('end').distinct()) datapoints |= set([start, end]) datapoints = set(min(max(start, date or start), end) for date in datapoints) for date in sorted(datapoints): timestamp = calendar.timegm(date.timetuple()) * 1000 total_cost, total_count, now_count = total_cost_count( query.all(), date, date+one_day) cost_data.append([timestamp, total_cost]) count_data.append([timestamp, total_count]) ret.update({ 'items': items, 'venture': self.venture, 'cost_data': json.dumps(cost_data), 'count_data': json.dumps(count_data), 'form': self.form, 'start_date': start, 'end_date': end, }) return ret