Commit 5a17864f00e69ab9d92995551f6862e34632275e
1 parent
60f307b6
Exists in
master
and in
39 other branches
Fixing user's pizza charts
Showing
2 changed files
with
31 additions
and
9 deletions
Show diff stats
src/accounts/templates/accounts/user_detail.html
@@ -98,8 +98,8 @@ | @@ -98,8 +98,8 @@ | ||
98 | <div class="col-lg-6 col-md-6 col-sm-12"> | 98 | <div class="col-lg-6 col-md-6 col-sm-12"> |
99 | <h3>{% trans "Community inside participations" %}</h3> | 99 | <h3>{% trans "Community inside participations" %}</h3> |
100 | <ul class="message-list"> | 100 | <ul class="message-list"> |
101 | - {% for doc in docs %} | ||
102 | - {% include "message-preview.html" %} | 101 | + {% for result in results %} |
102 | + {% include "search/preview-search.html" %} | ||
103 | {% empty %} | 103 | {% empty %} |
104 | <li>{% trans "No contributions of this user so far." %}</li> | 104 | <li>{% trans "No contributions of this user so far." %}</li> |
105 | {% endfor %} | 105 | {% endfor %} |
src/accounts/views.py
1 | #!/usr/bin/env python | 1 | #!/usr/bin/env python |
2 | # encoding: utf-8 | 2 | # encoding: utf-8 |
3 | 3 | ||
4 | +import datetime | ||
5 | + | ||
4 | from django.contrib import messages | 6 | from django.contrib import messages |
5 | 7 | ||
6 | from django.contrib.auth import get_user_model | 8 | from django.contrib.auth import get_user_model |
7 | from django.views.generic import DetailView, UpdateView | 9 | from django.views.generic import DetailView, UpdateView |
10 | +from django.utils import timezone | ||
8 | from django.utils.translation import ugettext as _ | 11 | from django.utils.translation import ugettext as _ |
9 | from django.shortcuts import render, redirect | 12 | from django.shortcuts import render, redirect |
10 | from django.core.urlresolvers import reverse | 13 | from django.core.urlresolvers import reverse |
11 | from django.core.exceptions import PermissionDenied | 14 | from django.core.exceptions import PermissionDenied |
12 | 15 | ||
16 | +from haystack.query import SearchQuerySet | ||
17 | + | ||
13 | from colab.deprecated import solrutils | 18 | from colab.deprecated import solrutils |
14 | from colab.deprecated import signup as signup_ | 19 | from colab.deprecated import signup as signup_ |
15 | 20 | ||
@@ -45,16 +50,33 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView): | @@ -45,16 +50,33 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView): | ||
45 | user = self.object | 50 | user = self.object |
46 | context = {} | 51 | context = {} |
47 | 52 | ||
48 | - # TODO: Use haystack instead of solrutils | ||
49 | - context['type_count'] = solrutils.count_types( | ||
50 | - filters={'collaborator': user.username} | ||
51 | - ) | 53 | + count_types = {} |
54 | + six_months = timezone.now() - datetime.timedelta(days=180) | ||
52 | 55 | ||
53 | - # TODO: Use haystack instead of solrutils | ||
54 | - context['docs'] = solrutils.get_latest_collaborations( | ||
55 | - username=user.username | 56 | + fields_or_lookup = ( |
57 | + {'collaborators__contains': user.username}, | ||
58 | + {'description__contains': user.username}, | ||
59 | + {'author': user.username}, | ||
56 | ) | 60 | ) |
57 | 61 | ||
62 | + | ||
63 | + for type in ['wiki', 'thread', 'changeset', 'ticket']: | ||
64 | + sqs = SearchQuerySet().filter( | ||
65 | + type=type, | ||
66 | + modified__gte=six_months, | ||
67 | + ) | ||
68 | + for filter_or in fields_or_lookup: | ||
69 | + sqs = sqs.filter_or(**filter_or) | ||
70 | + count_types[type] = sqs.count() | ||
71 | + | ||
72 | + context['type_count'] = count_types | ||
73 | + | ||
74 | + sqs = SearchQuerySet().exclude(type='thread') | ||
75 | + for filter_or in fields_or_lookup: | ||
76 | + sqs = sqs.filter_or(**filter_or) | ||
77 | + | ||
78 | + context['results'] = sqs.order_by('-modified', '-created')[:10] | ||
79 | + | ||
58 | email_pks = [addr.pk for addr in user.emails.iterator()] | 80 | email_pks = [addr.pk for addr in user.emails.iterator()] |
59 | query = Message.objects.filter(from_address__in=email_pks) | 81 | query = Message.objects.filter(from_address__in=email_pks) |
60 | query = query.order_by('-received_time') | 82 | query = query.order_by('-received_time') |