Beispiel #1
0
 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)
Beispiel #2
0
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