Beispiel #1
0
 def get_dashboard_blocks(self, request):
     if not self.check_demo_optin(request):
         return
     locale = get_current_babel_locale()
     n = now()
     weekday = format_date(n, "EEEE", locale=locale)
     today = format_date(n, locale=locale)
     yield DashboardValueBlock(id="test-x",
                               color="blue",
                               title="Happy %s!" % weekday,
                               value=today,
                               icon="fa fa-calendar")
     yield DashboardNumberBlock(id="test-x",
                                color="red",
                                title="Visitors Yesterday",
                                value=random.randint(2200, 10000),
                                icon="fa fa-globe")
     yield DashboardNumberBlock(id="test-x",
                                color="gray",
                                title="Registered Users",
                                value=1240,
                                icon="fa fa-user")
     yield DashboardNumberBlock(id="test-x",
                                color="orange",
                                title="Orders",
                                value=32,
                                icon="fa fa-inbox")
     yield DashboardMoneyBlock(id="test-x",
                               color="green",
                               title="Open Orders Value",
                               value=32000,
                               currency="USD",
                               icon="fa fa-line-chart")
     yield DashboardNumberBlock(id="test-x",
                                color="yellow",
                                title="Current Visitors",
                                value=6,
                                icon="fa fa-users")
     yield DashboardMoneyBlock(id="test-x",
                               color="none",
                               title="Sales this week",
                               value=430.30,
                               currency="USD",
                               icon="fa fa-dollar")
     yield DashboardValueBlock(id="test-1",
                               value="\u03C0",
                               title="The most delicious number",
                               color="purple",
                               icon="fa fa-smile-o")
Beispiel #2
0
def get_unfinalized_basket_block(currency, days=14):
    days = int(days)

    early_cutoff = now() - datetime.timedelta(days=days)
    # The `hours` value for `late_cutoff` should maybe be tunable somehow.
    # Either way, we're currently considering baskets abandoned if they've been
    # unupdated for two hours.
    late_cutoff = now() - datetime.timedelta(hours=2)

    data = (StoredBasket.objects.filter(currency=currency).filter(
        updated_on__range=(early_cutoff, late_cutoff),
        product_count__gte=0).exclude(deleted=True, finished=True).aggregate(
            count=Count("id"), sum=Sum("taxful_total_price_value")))
    if not data["count"]:
        return

    return DashboardMoneyBlock(
        id="abandoned_baskets_%d" % days,
        color="red",
        title=_("Abandoned Basket Value"),
        value=(data.get("sum") or 0),
        currency=currency,
        icon="fa fa-calculator",
        subtitle=_("Based on {b} baskets over the last {d} days").format(
            b=data.get("count"), d=days))
Beispiel #3
0
 def get_dashboard_blocks(self, request):
     return [
         DashboardContentBlock(id="test-0", content="Hello", size="invalid"),
         DashboardValueBlock(id="test-1", value="yes", title="hi"),
         DashboardNumberBlock(id="test-2", value=35, title="hello"),
         DashboardNumberBlock(id="test-3", value=35.3, title="hello"),
         DashboardMoneyBlock(id="test-4", value=35, title="hola", currency="USD"),
     ]
Beispiel #4
0
def get_open_orders_block(request):
    # Open orders / open orders value
    open_order_data = Order.objects.incomplete().aggregate(count=Count("id"), sum=Sum("taxful_total_price"))

    return DashboardMoneyBlock(
        id="open_orders_sum",
        color="orange",
        title=_("Open Orders Value"),
        value=(open_order_data.get("sum") or 0),
        icon="fa fa-inbox",
        subtitle=get_subtitle(open_order_data.get("count"))
    )
Beispiel #5
0
def get_sales_of_the_day_block(request):
    # Sales of the day
    todays_order_data = Order.objects.complete().since(0).aggregate(count=Count("id"), sum=Sum("taxful_total_price"))

    return DashboardMoneyBlock(
        id="todays_order_sum",
        color="green",
        title=_("Today's Sales"),
        value=(todays_order_data.get("sum") or 0),
        icon="fa fa-calculator",
        subtitle=get_subtitle(todays_order_data.get("count"))
    )
Beispiel #6
0
def get_lifetime_sales_block(request):
    # Lifetime sales
    lifetime_sales_data = Order.objects.complete().aggregate(
        count=Count("id"), sum=Sum("taxful_total_price"))

    return DashboardMoneyBlock(id="lifetime_sales_sum",
                               color="green",
                               title=_("Lifetime Sales"),
                               value=(lifetime_sales_data.get("sum") or 0),
                               icon="fa fa-line-chart",
                               subtitle=get_subtitle(
                                   lifetime_sales_data.get("count")))
Beispiel #7
0
def get_avg_purchase_size_block(request):
    lifetime_sales_data = Order.objects.complete().aggregate(
        count=Count("id"), sum=Sum("taxful_total_price"))

    # Average size of purchase with amount of orders it is calculated from
    average_purchase_size = Order.objects.all().aggregate(
        count=Count("id"), sum=Avg("taxful_total_price"))
    return DashboardMoneyBlock(id="average_purchase_sum",
                               color="blue",
                               title=_("Average Purchase"),
                               value=(average_purchase_size.get("sum") or 0),
                               icon="fa fa-shopping-cart",
                               subtitle=get_subtitle(
                                   lifetime_sales_data.get("count")))
Beispiel #8
0
def get_lifetime_sales_block(request, currency):
    orders = get_orders_by_currency(currency)

    # Lifetime sales
    lifetime_sales_data = orders.complete().aggregate(
        count=Count("id"), sum=Sum("taxful_total_price_value"))

    return DashboardMoneyBlock(id="lifetime_sales_sum",
                               color="green",
                               title=_("Lifetime Sales"),
                               value=(lifetime_sales_data.get("sum") or 0),
                               currency=currency,
                               icon="fa fa-line-chart",
                               subtitle=get_subtitle(
                                   lifetime_sales_data.get("count")))
Beispiel #9
0
def get_open_orders_block(request, currency):
    orders = get_orders_by_currency(currency)

    # Open orders / open orders value
    open_order_data = (orders.incomplete().aggregate(
        count=Count("id"), sum=Sum("taxful_total_price_value")))

    return DashboardMoneyBlock(
        id="open_orders_sum",
        color="orange",
        title=_("Open Orders Value"),
        value=TaxfulPrice((open_order_data.get("sum") or 0), currency),
        currency=currency,
        icon="fa fa-inbox",
        subtitle=get_subtitle(open_order_data.get("count")))