Source code for shuup.default_reports.mixins

# -*- coding: utf-8 -*-
# This file is part of Shuup.
#
# Copyright (c) 2012-2021, Shuup Commerce Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
from django.db.models import Q

from shuup.core.models import Order, OrderLine
from shuup.utils.dates import to_datetime_range


[docs]class OrderReportMixin(object):
[docs] def get_objects(self, paid=True): (start, end) = to_datetime_range(self.start_date, self.end_date) queryset = Order.objects.filter(shop=self.shop, order_date__range=(start, end)) creator = self.options.get("creator") orderer = self.options.get("orderer") customer = self.options.get("customer") filters = Q() if creator: filters &= Q(creator__in=creator) if orderer: filters &= Q(orderer__in=orderer) if customer: filters &= Q(customer__in=customer) queryset = queryset.filter(filters).valid() if paid: queryset = queryset.paid() return queryset.order_by("order_date")
[docs]class OrderLineReportMixin(object):
[docs] def get_objects(self): (start, end) = to_datetime_range(self.start_date, self.end_date) queryset = OrderLine.objects.filter(created_on__range=(start, end)) supplier = self.options.get("supplier") types = self.options.get("order_line_type") order_status = self.options.get("order_status") filters = Q() if supplier: filters &= Q(supplier__in=supplier) if types: filters &= Q(type__in=types) if order_status: filters &= Q(order__status__in=order_status) return queryset.filter(filters).order_by("created_on")