indexden is now optional
[oweals/karmaworld.git] / karmaworld / apps / users / views.py
1 #!/usr/bin/env python
2 # -*- coding:utf8 -*-
3 # Copyright (C) 2013  FinalsClub Foundation
4 from itertools import chain
5
6 from django.contrib.auth.models import User
7 from django.views.generic import TemplateView
8 from django.views.generic.list import MultipleObjectMixin
9 from karmaworld.apps.users.models import ALL_KARMA_EVENT_CLASSES
10
11
12 class ProfileView(TemplateView, MultipleObjectMixin):
13     model = User
14     context_object_name = 'user' # name passed to template
15     template_name = 'user_profile.html'
16
17     def get_context_data(self, **kwargs):
18         all_events = []
19         for cls in ALL_KARMA_EVENT_CLASSES:
20             all_events.append(
21                 [(cls.__name__, o) for o in cls.objects.filter(user=self.request.user)]
22             )
23
24         result_list = sorted(chain.from_iterable(all_events),
25                              key=lambda o: o[1].timestamp,
26                              reverse=True)
27
28         kwargs['object_list'] = result_list
29
30         kwargs['badge'] = self.request.user.get_profile().get_badge()
31
32         return super(ProfileView, self).get_context_data(**kwargs)