def filter_date(self, name, qs, value): try: filter_kwargs = {} value = json.loads(value) start = value.get('start') end = value.get('end') if start: filter_kwargs.update({'date__gte': to_pydate(start)}) if end: filter_kwargs.update({'date__lte': to_pydate(end)}) return qs.filter(**filter_kwargs) except Exception as e: logger.warning('can\'t filter with provided date: "%s\n The error was: %s"' % (value, e)) return qs
def month_details(self, request): date = to_pydate(request.query_params.get('date')) kind = request.query_params.get('kind') kind = kind if len(kind) == 3 else kind[:3] qs = self.get_queryset().filter(kind=kind).annotate_with_amount(first_day(date), last_day(date)) result = [] for category in qs: if category.transactions_amount: data = { 'key': category.name, 'y': category.transactions_amount, } result.append(data) return Response({'result': result})
def amount(self, request): begin = request.query_params.get('begin', None) end = request.query_params.get('end', None) kind = request.query_params.get('kind', None) income = self.get_queryset().get_amount(kind, to_pydate(begin), to_pydate(end)) return Response({'result': income})