diff --git a/k4ever/buyable/templates/buyables/product_list.html b/k4ever/buyable/templates/buyables/product_list.html
index 0174db7..e4a6405 100644
--- a/k4ever/buyable/templates/buyables/product_list.html
+++ b/k4ever/buyable/templates/buyables/product_list.html
@@ -6,7 +6,7 @@
{% for buyable in buyables %}
-
+
|
{{ buyable.name }} |
diff --git a/k4ever/main/templates/main/product_list.html b/k4ever/main/templates/main/product_list.html
index d63e744..ce6e2b6 100644
--- a/k4ever/main/templates/main/product_list.html
+++ b/k4ever/main/templates/main/product_list.html
@@ -6,18 +6,18 @@
{% for buyable in buyables %}
|
-
+
|
- {{ buyable.buyable__name }} {% if buyable.num_buys %}({{ buyable.num_buys }} mal gekauft){% endif %} |
-
- {% if buyable.buyable__deposit > 0 %}
- {{ buyable.buyable__price|floatformat:2 }}€
- {{ buyable.buyable__price|floatformat:2 }}€ / {{ buyable.buyable__deposit|floatformat:2 }}€
+ | {{ buyable.name }} {% if buyable.num_buys %}({{ buyable.num_buys }} mal gekauft){% endif %} |
+
+ {% if buyable.deposit > 0 %}
+ {{ buyable.price|floatformat:2 }}€
+ {{ buyable.price|floatformat:2 }}€ / {{ buyable.deposit|floatformat:2 }}€
{% if includeDeposit %}
- {{ buyable.buyable__deposit|floatformat:2 }}€
+ {{ buyable.deposit|floatformat:2 }}€
{% endif %}
{% else %}
- {{ buyable.buyable__price|floatformat:2 }}€
+ {{ buyable.price|floatformat:2 }}€
{% endif %}
|
diff --git a/k4ever/main/views.py b/k4ever/main/views.py
index 73da4df..55ebec5 100644
--- a/k4ever/main/views.py
+++ b/k4ever/main/views.py
@@ -1,13 +1,15 @@
# -*- coding: utf8 -*-
-from django.shortcuts import render_to_response
-from django.template import RequestContext
+from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth.decorators import login_required
-from django.db.models import Count
+from django.db.models import Count, Max
from django.http import HttpResponseRedirect
-from main.models import Plugin, PluginPermission
-from django.contrib.auth.forms import PasswordChangeForm
+from django.shortcuts import render_to_response
+from django.template import RequestContext
+
from buyable.models import Purchase, Buyable, BuyableType
from main.helper import getUserFromAuthblob
+from main.models import Plugin, PluginPermission
+
@login_required
def startpage(request):
@@ -16,40 +18,33 @@ def startpage(request):
'''
drinks = BuyableType.objects.get(name="Getränk").buyable_set.all()
snacks = BuyableType.objects.get(name="Snack").buyable_set.all()
-
- allMost = Purchase.objects.filter(isDeposit=False).values('buyable__name', 'buyable__id','buyable__image','buyable__price','buyable__deposit')
-
- allMostDrinks = allMost.filter(buyable__in=drinks).annotate(num_buys=Count('buyable')).order_by('-num_buys')
- allMostSnacks = allMost.filter(buyable__in=snacks).annotate(num_buys=Count('buyable')).order_by('-num_buys')
-
- usersMostDrinks = allMost.filter(buyable__in=drinks).filter(order__user=request.user.id).annotate(num_buys=Count('buyable')).order_by('-num_buys')
- usersMostSnacks = allMost.filter(buyable__in=snacks).filter(order__user=request.user.id).annotate(num_buys=Count('buyable')).order_by('-num_buys')
-
- usersLastDrinks = allMost.filter(buyable__in=drinks).filter(order__user=request.user.id).annotate(num_buys=Count('buyable')).order_by('-order__dateTime')
- usersLastSnacks = allMost.filter(buyable__in=snacks).filter(order__user=request.user.id).annotate(num_buys=Count('buyable')).order_by('-order__dateTime')
-
- usersLastDrinks = allMost.distinct().filter(buyable__in=drinks).filter(order__user=request.user.id).order_by('-order__dateTime')
- usersLastSnacks = allMost.distinct().filter(buyable__in=snacks).filter(order__user=request.user.id).order_by('-order__dateTime')
-
- #if someone knows a better way to do this, just replace this code
- #purpose: filter usersLast so that it only contains unique items
- #hint: distinct() does not work because dateTime is included due to order_by(), so all items appear distinct
-
- usersLastDrinks_unique = []
- for x in usersLastDrinks:
- if not x in usersLastDrinks_unique:
- usersLastDrinks_unique.append(x)
- #usersLastDrinks = map(lambda x:{ "buyable__name" : x }, usersLastDrinks_unique)
- usersLastDrinks = usersLastDrinks_unique
-
- usersLastSnacks_unique = []
- for x in usersLastSnacks:
- if not x in usersLastSnacks_unique:
- usersLastSnacks_unique.append(x)
- #usersLastSnacks_unique = usersLastSnacks.distinct()
- usersLastSnacks = usersLastSnacks_unique
-
- return render_to_response("main/startpage.html", {'allMostDrinks' : allMostDrinks[:5], 'allMostSnacks' : allMostSnacks[:5], 'usersMostDrinks': usersMostDrinks[:5], 'usersMostSnacks': usersMostSnacks[:5], 'usersLastDrinks' : usersLastDrinks[:5], 'usersLastSnacks' : usersLastSnacks[:5]}, RequestContext(request))
+
+ context = {}
+
+ drink_data = (drinks, ('allMostDrinks', 'usersMostDrinks', 'usersLastDrinks'))
+ snack_data = (snacks, ('allMostSnacks', 'usersMostSnacks', 'usersLastSnacks'))
+
+ for buyables, context_vars in (drink_data, snack_data):
+ buyables = buyables.values('name', 'id','image','price','deposit')
+
+ # allMost
+ context[context_vars[0]] = buyables.filter(purchase__isDeposit=False).annotate(
+ num_buys=Count('purchase')).order_by('-num_buys')[:5]
+
+ # filtert fuer die anderen Variablen vor
+ buyables = buyables.filter( purchase__order__user=request.user.id,
+ purchase__isDeposit=False)
+ buyables = buyables.annotate(num_buys=Count('purchase'))
+
+ # usersMost
+ context[context_vars[1]] = buyables.order_by('-num_buys')[:5]
+
+ # usersLast
+ buyables = buyables.annotate(max_dateTime=Max('purchase__order__dateTime'))
+ context[context_vars[2]] = buyables.order_by('-max_dateTime')[:5]
+
+ return render_to_response("main/startpage.html", context, RequestContext(request))
+
def register(request):
""" The "no registration available" page... """