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 | 98 | <div class="col-lg-6 col-md-6 col-sm-12"> |
99 | 99 | <h3>{% trans "Community inside participations" %}</h3> |
100 | 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 | 103 | {% empty %} |
104 | 104 | <li>{% trans "No contributions of this user so far." %}</li> |
105 | 105 | {% endfor %} | ... | ... |
src/accounts/views.py
1 | 1 | #!/usr/bin/env python |
2 | 2 | # encoding: utf-8 |
3 | 3 | |
4 | +import datetime | |
5 | + | |
4 | 6 | from django.contrib import messages |
5 | 7 | |
6 | 8 | from django.contrib.auth import get_user_model |
7 | 9 | from django.views.generic import DetailView, UpdateView |
10 | +from django.utils import timezone | |
8 | 11 | from django.utils.translation import ugettext as _ |
9 | 12 | from django.shortcuts import render, redirect |
10 | 13 | from django.core.urlresolvers import reverse |
11 | 14 | from django.core.exceptions import PermissionDenied |
12 | 15 | |
16 | +from haystack.query import SearchQuerySet | |
17 | + | |
13 | 18 | from colab.deprecated import solrutils |
14 | 19 | from colab.deprecated import signup as signup_ |
15 | 20 | |
... | ... | @@ -45,16 +50,33 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView): |
45 | 50 | user = self.object |
46 | 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 | 80 | email_pks = [addr.pk for addr in user.emails.iterator()] |
59 | 81 | query = Message.objects.filter(from_address__in=email_pks) |
60 | 82 | query = query.order_by('-received_time') | ... | ... |