Exemple #1
0
 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
Exemple #2
0
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),
    )