Browse Source

Added last 3 products and transactions in the last 12 hours to the overview page, resulting in a really nice dashboard

master
Niklas Brachmann 11 years ago
parent
commit
bffd2e0947
  1. 45
      cash/templates/cash/base.html
  2. 22
      cash/views.py

45
cash/templates/cash/base.html

@ -91,6 +91,51 @@ @@ -91,6 +91,51 @@
<h1>{% blocktrans with firstname=user.first_name %}Welcome, {{ firstname }}!{% endblocktrans %}</h1>
<div class="row">
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
{% trans "Account information" %}
</div>
<div class="panel-body">
<dl>
<dt>{% trans "Username:" %}</dt>
<dl>{{ user.username }}</dl>
<dt>{% trans "Full name:" %}</dt>
<dl>{{ user.first_name }} {{ user.last_name }}</dl>
<dt>{% trans "E-Mail address:" %}</dt>
<dl>{{ user.email }}</dl>
<dt>{% trans "Guthaben:" %}</dt>
<dl {% if user.account.credit < 0 %} style="color: red"{% endif %}>{{ user.account.credit|floatformat:2 }}€</dl>
</div>
</div>
</div>
<div class="col-md-9">
<div class="panel panel-primary">
<div class="panel-heading">
{% trans "Last purchased products" %}
</div>
<div class="panel-body">
{% include "cash/includes/product_list.html" with products=latest_purchases class="col-xs-6 col-md-4" only %}
</div>
</div>
</div>
<div class="col-md-12">
<div class="panel panel-info">
<div class="panel-heading">
{% trans "Your transactions in the last 12 hours" %}
</div>
{% if latest_transactions %}
{% include "cash/includes/transaction_list.html" with transactions=latest_transactions only %}
{% else %}
<div class="panel-body">
{% blocktrans %}There where no transactions in your account in the last 12 hours.{% endblocktrans %}
</div>
{% endif %}
</div>
</div>
</div>
{% endblock %}
</div>
</div>

22
cash/views.py

@ -7,11 +7,31 @@ from django.core import paginator @@ -7,11 +7,31 @@ from django.core import paginator
from cash.models import *
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy
import datetime
@login_required
def overview(request):
a = request.user.account
time = datetime.datetime.now() - datetime.timedelta(hours=12)
transactions = Transaction.objects.filter(account=a).filter(timestamp__gte=time).order_by('-timestamp')
# FIXME: distinct doesn't work as expected, so fetch 20 rows and hope that there are 3 distinct products
purchases = Product.objects.filter(saleslogentry__account=a).order_by('-saleslogentry__timestamp').distinct()[:20]
products = []
# Find 3 products
for p in purchases:
if not p in products:
products.append(p)
if len(products) == 3:
break
context = RequestContext(request, { 'latest_transactions': transactions,
'latest_purchases': products})
return render_to_response('cash/index.html',
context_instance=RequestContext(request))
context_instance=context)
class ProductView(generic.DetailView):

Loading…
Cancel
Save