Commit 5a17864f00e69ab9d92995551f6862e34632275e

Authored by Luan
1 parent 60f307b6

Fixing user's pizza charts

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