def get_context_data(self, **kwargs): user = self.object context = {} count_types = OrderedDict() fields_or_lookup = ( {'collaborators__contains': user.username}, {'fullname_and_username__contains': user.username}, ) counter_class = {} #{ # 'wiki': WikiCollabCount, # 'ticket': TicketCollabCount, #} types = ['thread'] #types.extend(['ticket', 'wiki', 'changeset', 'attachment']) messages = Message.objects.filter(from_address__user__pk=user.pk) for type in types: CounterClass = counter_class.get(type) if CounterClass: try: counter = CounterClass.objects.get(author=user.username) except CounterClass.DoesNotExist: count_types[trans(type)] = 0 else: count_types[trans(type)] = counter.count elif type == 'thread': count_types[trans(type)] = messages.count() else: sqs = SearchQuerySet() for filter_or in fields_or_lookup: sqs = sqs.filter_or(type=type, **filter_or) count_types[trans(type)] = sqs.count() context['type_count'] = count_types sqs = SearchQuerySet() for filter_or in fields_or_lookup: sqs = sqs.filter_or(**filter_or).exclude(type='thread') context['results'] = sqs.order_by('-modified', '-created')[:10] email_pks = [addr.pk for addr in user.emails.iterator()] query = Message.objects.filter(from_address__in=email_pks) query = query.order_by('-received_time') context['emails'] = query[:10] count_by = 'thread__mailinglist__name' context['list_activity'] = dict(messages.values_list(count_by)\ .annotate(Count(count_by))\ .order_by(count_by)) context.update(kwargs) return super(UserProfileDetailView, self).get_context_data(**context)
def get_context_data(self, **kwargs): user = self.object context = {} count_types = OrderedDict() fields_or_lookup = ( { 'collaborators__contains': user.username }, { 'fullname_and_username__contains': user.username }, ) counter_class = { 'wiki': WikiCollabCount, 'ticket': TicketCollabCount, } messages = Message.objects.filter(from_address__user__pk=user.pk) for type in ['thread', 'ticket', 'wiki', 'changeset', 'attachment']: CounterClass = counter_class.get(type) if CounterClass: try: counter = CounterClass.objects.get(author=user.username) except CounterClass.DoesNotExist: count_types[trans(type)] = 0 else: count_types[trans(type)] = counter.count elif type == 'thread': count_types[trans(type)] = messages.count() else: sqs = SearchQuerySet() for filter_or in fields_or_lookup: sqs = sqs.filter_or(type=type, **filter_or) count_types[trans(type)] = sqs.count() context['type_count'] = count_types sqs = SearchQuerySet() for filter_or in fields_or_lookup: sqs = sqs.filter_or(**filter_or).exclude(type='thread') context['results'] = sqs.order_by('-modified', '-created')[:10] email_pks = [addr.pk for addr in user.emails.iterator()] query = Message.objects.filter(from_address__in=email_pks) query = query.order_by('-received_time') context['emails'] = query[:10] count_by = 'thread__mailinglist__name' context['list_activity'] = dict(messages.values_list(count_by)\ .annotate(Count(count_by))\ .order_by(count_by)) context.update(kwargs) return super(UserProfileDetailView, self).get_context_data(**context)
def get_context_data(self, **kwargs): user = self.object context = {} count_types = OrderedDict() fields_or_lookup = ( {"collaborators__contains": user.username}, {"fullname_and_username__contains": user.username}, ) counter_class = {"wiki": WikiCollabCount, "ticket": TicketCollabCount} messages = Message.objects.filter(from_address__user__pk=user.pk) for type in ["thread", "ticket", "wiki", "changeset", "attachment"]: CounterClass = counter_class.get(type) if CounterClass: try: counter = CounterClass.objects.get(author=user.username) except CounterClass.DoesNotExist: count_types[trans(type)] = 0 else: count_types[trans(type)] = counter.count elif type == "thread": count_types[trans(type)] = messages.count() else: sqs = SearchQuerySet() for filter_or in fields_or_lookup: sqs = sqs.filter_or(type=type, **filter_or) count_types[trans(type)] = sqs.count() context["type_count"] = count_types sqs = SearchQuerySet() for filter_or in fields_or_lookup: sqs = sqs.filter_or(**filter_or).exclude(type="thread") context["results"] = sqs.order_by("-modified", "-created")[:10] email_pks = [addr.pk for addr in user.emails.iterator()] query = Message.objects.filter(from_address__in=email_pks) query = query.order_by("-received_time") context["emails"] = query[:10] count_by = "thread__mailinglist__name" context["list_activity"] = dict(messages.values_list(count_by).annotate(Count(count_by)).order_by(count_by)) context.update(kwargs) return super(UserProfileDetailView, self).get_context_data(**context)
def index(request): """Index page view""" latest_threads = Thread.objects.all()[:6] hottest_threads = Thread.highest_score.from_haystack()[:6] count_types = cache.get('home_chart') if count_types is None: count_types = OrderedDict() count_types['thread'] = SearchQuerySet().filter( type='thread', ).count() # TODO: this section should be inside trac app and only use it here #if settings.TRAC_ENABLED: # for type in ['changeset', 'attachment']: # count_types[type] = SearchQuerySet().filter( # type=type, # ).count() # count_types['ticket'] = sum([ # ticket.count for ticket in TicketCollabCount.objects.all() # ]) # count_types['wiki'] = sum([ # wiki.count for wiki in WikiCollabCount.objects.all() # ]) cache.set('home_chart', count_types) for key in count_types.keys(): count_types[trans(key)] = count_types.pop(key) context = { 'hottest_threads': hottest_threads[:6], 'latest_threads': latest_threads, 'type_count': count_types, 'latest_results': SearchQuerySet().all().order_by( '-modified', '-created' )[:6], } return render(request, 'home.html', context)
def index(request): """Index page view""" latest_threads = Thread.objects.all()[:6] hottest_threads = Thread.highest_score.from_haystack()[:6] count_types = cache.get('home_chart') if count_types is None: count_types = OrderedDict() for type in ['thread', 'changeset', 'attachment']: count_types[type] = SearchQuerySet().filter( type=type, ).count() count_types['ticket'] = sum([ ticket.count for ticket in TicketCollabCount.objects.all() ]) count_types['wiki'] = sum([ wiki.count for wiki in WikiCollabCount.objects.all() ]) cache.set('home_chart', count_types) for key in count_types.keys(): count_types[trans(key)] = count_types.pop(key) user_form = UserCreationForm() context = { 'hottest_threads': hottest_threads[:6], 'latest_threads': latest_threads, 'type_count': count_types, 'latest_results': SearchQuerySet().all().order_by( '-modified', '-created' )[:6], 'user_form': user_form, } return render(request, 'home.html', context)
def index(request): """Index page view""" latest_threads = Thread.objects.all()[:6] hottest_threads = Thread.highest_score.from_haystack()[:6] count_types = OrderedDict() six_months = timezone.now() - timezone.timedelta(days=180) for type in ['thread', 'ticket', 'wiki', 'changeset', 'attachment']: count_types[trans(type)] = SearchQuerySet().filter( type=type, modified__gte=six_months, ).count() context = { 'hottest_threads': hottest_threads[:6], 'latest_threads': latest_threads, 'type_count': count_types, 'latest_results': SearchQuerySet().all().order_by( '-modified', '-created' )[:6], } return render(request, 'home.html', context)