def get_context_data(self, **kwargs): ctx = super(UserRegionMixin, self).get_context_data(**kwargs) regions = Region.get_user_count_by_region() ctx['regions'] = regions ctx['total_users'] = sum( [region['users__count'] for region in regions]) return ctx
def index(request, disqus=False, comment_id=None): """ view that renders a default home""" user = request.user activities = user.useractivity_set.prefetch_related('activity__event') my_pending_activities = activities.filter( attendance_date__isnull=True, activity__event__start_date__gte=today(), )[:3] incomming_events = Event.objects.incomming().filter( stage__stage_type=Stage.STAGE_TYPE_ACTIVITY, stage__is_active=True, ) comments = Comment.objects.filter(parent=None, public=True) if not request.user.is_experimenta(): incomming_events = incomming_events.exclude( activity_type=Event.ACTIVITY_TYPES.EXPERIMENTA ) comments = comments.exclude( event__activity_type=Event.ACTIVITY_TYPES.EXPERIMENTA ) incomming_events = incomming_events[:5] if comment_id: comment = comments.filter(id=comment_id).first() # marks the children of the comment as read for c in comment.comment_set.all(): c.notification_set.all().update(read=True) comments = list(comments.exclude(id=comment_id)[:9]) if comment: comments.insert(0, comment) else: comments = list(comments[:10]) # get users by region regions = Region.get_user_count_by_region() # get info about total_users except top 3 others = { 'users__count': sum([o['users__count'] for o in regions[3:]]), 'percent': 100-sum([region['percent'] for region in regions[:3]]) } # total users with region total_users = sum([region['users__count'] for region in regions]) # institutions with users institutions_count = Institution.objects.has_users().active().count() msg = ( u"Su cuenta en La Red se encuentra pendiente" u" de aprobación. Por lo que no puedes realizar acciones en el" u" sitio hasta que sea aprobada." ) if request.user.is_pending(): messages.add_message( request, messages.ERROR, msg ) context = { 'form': CommentForm(), 'interest_list': request.user.interests.all(), 'my_pending_activities': my_pending_activities, 'incomming_events': incomming_events, 'my_pending_activities': my_pending_activities, 'comments': comments, 'navbar_active': 'home', 'institutions_count': institutions_count, 'regions': regions, 'total_users': total_users, 'others': others, } return render_to_response( 'index.jade', context, context_instance=RequestContext(request), )