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