diff --git a/k4ever/main/templates/main/startpage.html b/k4ever/main/templates/main/startpage.html
index e327d96..38c0e11 100644
--- a/k4ever/main/templates/main/startpage.html
+++ b/k4ever/main/templates/main/startpage.html
@@ -1,36 +1,238 @@
{% extends "base.html" %}
{% block "content" %}
- {% if allMost %}
- Am beliebtesten ist:
- {% for buyable in allMost %}
- {{ buyable.buyable__name }} ( {{ buyable.num_buys }} mal)
- {% endfor %}
-
+
+ {% if allMostDrinks or allMostSnacks %}
+
+
+
+
+ |
+
+ Die beliebtesten Artikel
+ |
+
+ Deine Lieblingsartikel
+ |
+
+ Zuletzt hattest du:
+ |
+
+
+
+ Getränke
+ |
+
+ {% if allMostDrinks %}
+
+ {% else %}
+ Noch keine gekauft.
+ {% endif %}
+ |
+
+ {% if usersMostDrinks %}
+
+ {% else %}
+ Noch keine gekauft.
+ {% endif %}
+ |
+
+ {% if usersLastDrinks %}
+
+ {% else %}
+ Noch keine gekauft.
+ {% endif %}
+ |
+
+
+
+ Snacks
+ |
+
+ {% if allMostSnacks %}
+
+ {% else %}
+ Noch keine gekauft.
+ {% endif %}
+ |
+
+ {% if usersMostSnacks %}
+
+ {% else %}
+ Noch keine gekauft.
+ {% endif %}
+ |
+
+ {% if usersLastSnacks %}
+
+ {% else %}
+ Noch keine gekauft.
+ {% endif %}
+ |
+
+
{% else %}
{{ error }}
- Noch niemand hat was gekauft?
+ Es hat scheinbar noch niemand etwas gekauft.
Sei der Erste!
{% endif %}
-
- {% if usersMost %}
- Am oeftesten hattest du:
- {% for buyable in usersMost %}
-
{{ buyable.buyable__name }} ( {{ buyable.num_buys }} mal)
- {% endfor %}
-
+
+
+ {% comment %}
+
+ {% if usersMostSnacks or usersMostDrinks %}
+
Deine Lieblingsartikel
+
+
+
+ Getränke
+ |
+
+ Snacks
+ |
+
+
+
+
{% else %}
{{ error }}
- Nix gekauft?
+ Wie es aussieht, hast du noch nichts gekauft.
Das kannst du ändern!
{% endif %}
-
- {% if usersLast %}
- Als letztes hattest du:
- {% for buyable in usersLast %}
-
{{ buyable.buyable__name }}
- {% endfor %}
-
+
+
+ {% if usersLastSnacks or usersLastDrinks %}
+
Du hattest als letztes:
+
+
+
+ Getränke
+ |
+
+ Snacks
+ |
+
+
+
+
{% else %}
{{ error }}
- Noch nix gekauft?
{% endif %}
+
+ {% endcomment %}
{% endblock %}
diff --git a/k4ever/main/views.py b/k4ever/main/views.py
index e539c7e..d7167af 100644
--- a/k4ever/main/views.py
+++ b/k4ever/main/views.py
@@ -1,3 +1,4 @@
+# -*- coding: utf8 -*-
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
@@ -5,18 +6,46 @@ from django.db.models import Count
from django.http import HttpResponseRedirect
from main.models import Plugin, PluginPermission
-
-from buyable.models import Purchase, Buyable
+from buyable.models import Purchase, Buyable, BuyableType
@login_required
def startpage(request):
''' Diese Funktion wird wahrscheinlich viel Last erzeugen, da
sie ueber mehrere Tabellen joined,filtered und wieder reduced.
'''
- allMost = Purchase.objects.filter(isDeposit=False).values('buyable__name', 'buyable__id').annotate(num_buys=Count('buyable')).order_by('-num_buys')
- usersMost = Purchase.objects.filter(isDeposit=False).values('buyable__name','buyable__id').filter(order__user=request.user.id).annotate(num_buys=Count('buyable')).order_by('-num_buys')
- usersLast = Purchase.objects.filter(isDeposit=False).values('buyable__name','buyable__id').filter(order__user=request.user.id).order_by('-order__dateTime')
- return render_to_response("main/startpage.html", {'allMost' : allMost,'usersMost': usersMost, 'usersLast' : usersLast[:12]}, RequestContext(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.filter(buyable__in=drinks).filter(order__user=request.user.id).order_by('-order__dateTime')
+ usersLastSnacks = allMost.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
+ 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 = usersLastSnacks_unique
+
+ return render_to_response("main/startpage.html", {'allMostDrinks' : allMostDrinks[:5], 'allMostSnacks' : allMostSnacks[:5], 'usersMostDrinks': usersMostDrinks[:5], 'usersMostSnacks': usersMostSnacks[:5], 'usersLastDrinks' : usersLastDrinks[:10], 'usersLastSnacks' : usersLastSnacks[:10]}, RequestContext(request))
def register(request):
""" The "no registration available" page... """