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 %} + + {% for buyable in allMostDrinks %} + + + + + + {% endfor %} +
+ + + {{ buyable.buyable__name }}
({{ buyable.num_buys }} mal) +
+ Kaufen + {% if buyable.buyable__deposit > 0 %} + (Ohne Pfand) Kaufen (Mit Pfand) + {% else %} + + {% endif %} + +
+ {% else %} + Noch keine gekauft. + {% endif %} +
+ {% if usersMostDrinks %} + + {% for buyable in usersMostDrinks %} + + + + + + {% endfor %} +
+ + + {{ buyable.buyable__name }}
({{ buyable.num_buys }} mal) +
+ Kaufen + {% if buyable.buyable__deposit > 0 %} + (Ohne Pfand) Kaufen (Mit Pfand) + {% else %} + + {% endif %} + +
+ {% else %} + Noch keine gekauft. + {% endif %} +
+ {% if usersLastDrinks %} + + {% for buyable in usersLastDrinks %} + + + + + + {% endfor %} +
+ + + {{ buyable.buyable__name }} + + Kaufen + {% if buyable.buyable__deposit > 0 %} + (Ohne Pfand) Kaufen (Mit Pfand) + {% else %} + + {% endif %} + +
+ {% else %} + Noch keine gekauft. + {% endif %} +
+

Snacks

+
+ {% if allMostSnacks %} + + {% for buyable in allMostSnacks %} + + + + + + {% endfor %} +
+ + + {{ buyable.buyable__name }}
({{ buyable.num_buys }} mal) +
+ Kaufen + {% if buyable.buyable__deposit > 0 %} + (Ohne Pfand) Kaufen (Mit Pfand) + {% else %} + + {% endif %} +
+ {% else %} + Noch keine gekauft. + {% endif %} +
+ {% if usersMostSnacks %} + + {% for buyable in usersMostSnacks %} + + + + + + {% endfor %} +
+ + + {{ buyable.buyable__name }}
({{ buyable.num_buys }} mal) +
+ Kaufen + {% if buyable.buyable__deposit > 0 %} + (Ohne Pfand) Kaufen (Mit Pfand) + {% else %} + + {% endif %} +
+ {% else %} + Noch keine gekauft. + {% endif %} +
+ {% if usersLastSnacks %} + + {% for buyable in usersLastSnacks %} + + + + + + {% endfor %} +
+ + + {{ buyable.buyable__name }} + + Kaufen + {% if buyable.buyable__deposit > 0 %} + (Ohne Pfand) Kaufen (Mit Pfand) + {% else %} + + {% endif %} +
+ {% 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... """