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') | ... | ... |