Exemplo n.º 1
0
 def items(self, member):
     stream = actor_stream(member)
     if stream:
         if self.verbs:
             stream = stream.filter(verb__in = self.verbs)
         return (item for item in stream[:20] if item.target) # remove items with None target, or invalid target
     return []
Exemplo n.º 2
0
    def get_object_context (self, request, object_id):
        from actstream import actor_stream
        member = get_object_or_404(Member,pk=object_id)
        if request.user.is_authenticated():
            p = request.user.get_profile()
            watched = member in p.followed_members.all()
        else:
            watched = False
            
        verbs = None
        if 'verbs' in request.GET:
            verbs_form = VerbsForm(request.GET)
            if verbs_form.is_valid():
                verbs = verbs_form.cleaned_data['verbs']
        if verbs==None:
            verbs = ('proposed', 'posted')
            verbs_form = VerbsForm({'verbs': verbs})

        bills_statistics = {}
        bills_statistics['proposed'] = member.bills.count()
        bills_statistics['pre'] = member.bills.filter(Q(stage='2')|Q(stage='3')|Q(stage='4')|Q(stage='5')|Q(stage='6')).count()
        bills_statistics['first'] = member.bills.filter(Q(stage='4')|Q(stage='5')|Q(stage='6')).count()
        bills_statistics['approved'] = member.bills.filter(stage='6').count()

        return {'watched_member': watched,
                'actions': actor_stream(member).filter(verb__in=verbs),
                'verbs_form': verbs_form,
                'bills_statistics':bills_statistics,
               }
Exemplo n.º 3
0
    def get_context (self):
        context = super(MemberDetailView, self).get_context()
        member = context['object']
        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
        else:
            watched = False
            
        verbs = None
        if 'verbs' in self.request.GET:
            verbs_form = VerbsForm(self.request.GET)
            if verbs_form.is_valid():
                verbs = verbs_form.cleaned_data['verbs']
        if verbs==None:
            verbs = ('proposed', 'posted')
            verbs_form = VerbsForm({'verbs': verbs})

        bills_statistics = {}
        bills_statistics['proposed'] = member.bills.count()
        bills_statistics['pre'] = member.bills.filter(Q(stage='2')|Q(stage='3')|Q(stage='4')|Q(stage='5')|Q(stage='6')).count()
        bills_statistics['first'] = member.bills.filter(Q(stage='4')|Q(stage='5')|Q(stage='6')).count()
        bills_statistics['approved'] = member.bills.filter(stage='6').count()

        bills_tags = Tag.objects.usage_for_queryset(member.bills.all(),counts=True)
        #bills_tags.sort(key=lambda x:x.count,reverse=True)
        bills_tags = tagging.utils.calculate_cloud(bills_tags)
        context.update({'watched_member': watched,
                'actions': actor_stream(member).filter(verb__in=verbs),
                'verbs_form': verbs_form,
                'bills_statistics':bills_statistics,
                'bills_tags':bills_tags,
               })
        return context
Exemplo n.º 4
0
def actor(request, content_type_id, object_id):
    """
    ``Actor`` focused activity stream for actor defined by ``content_type_id``, ``object_id``
    """
    ctype = get_object_or_404(ContentType, pk=content_type_id)
    actor = get_object_or_404(ctype.model_class(), pk=object_id)    
    return render_to_response('activity/actor.html', {
        'action_list': actor_stream(actor), 'actor':actor,'ctype':ctype
    }, context_instance=RequestContext(request))
Exemplo n.º 5
0
def user(request, username):
    """
    ``User`` focused activity stream. (Eg: Profile page twitter.com/justquick)
    """
    user = get_object_or_404(User, username=username)
    return render_to_response('activity/actor.html', {
        'ctype': ContentType.objects.get_for_model(User),
        'actor':user,'action_list':actor_stream(user)
    }, context_instance=RequestContext(request))
Exemplo n.º 6
0
    def get_context (self):
        context = super(MemberDetailView, self).get_context()
        member = context['object']
        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
        else:
            watched = False
            
        verbs = None
        if 'verbs' in self.request.GET:
            verbs_form = VerbsForm(self.request.GET)
            if verbs_form.is_valid():
                verbs = verbs_form.cleaned_data['verbs']
        if verbs==None:
            verbs = ('proposed', 'posted')
            verbs_form = VerbsForm({'verbs': verbs})

        bills_statistics = {}
        bills_statistics['proposed'] = member.bills.count()
        bills_statistics['pre'] = member.bills.filter(Q(stage='2')|Q(stage='3')|Q(stage='4')|Q(stage='5')|Q(stage='6')).count()
        bills_statistics['first'] = member.bills.filter(Q(stage='4')|Q(stage='5')|Q(stage='6')).count()
        bills_statistics['approved'] = member.bills.filter(stage='6').count()

        bills_tags = Tag.objects.usage_for_queryset(member.bills.all(),counts=True)
        #bills_tags.sort(key=lambda x:x.count,reverse=True)
        bills_tags = tagging.utils.calculate_cloud(bills_tags)

        agendas = Agenda.objects.get_selected_for_instance(member, top=3, bottom=3)
        agendas = agendas['top'] + agendas['bottom']
        for agenda in agendas:
            agenda.watched=False
        if self.request.user.is_authenticated():
            watched_agendas = self.request.user.get_profile().agendas
            for watched_agenda in watched_agendas:
                if watched_agenda in agendas:
                    agendas[agendas.index(watched_agenda)].watched = True
                else:
                    watched_agenda.score = watched_agenda.member_score(member)
                    watched_agenda.watched = True
                    agendas.append(wathced_agenda)
        agendas.sort(key=attrgetter('score'), reverse=True)
        
        context.update({'watched_member': watched,
                'actions': actor_stream(member).filter(verb__in=verbs),
                'verbs_form': verbs_form,
                'bills_statistics':bills_statistics,
                'bills_tags':bills_tags,
                'agendas':agendas
               })
        return context
Exemplo n.º 7
0
 def items(self, obj):
     i = actor_stream(obj)
     if i:
         return i[:30]
     return []
Exemplo n.º 8
0
    def get_context_data(self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context['object']
        current_knesset_start_date = Knesset.objects.current_knesset(
        ).start_date
        if self.request.user.is_authenticated():
            profile = self.request.user.profiles.get()
            watched = profile.is_watching_member(member)
            cached_context = None
        else:
            watched = False
            cached_context = cache.get('mk_%d' % member.id)

        if cached_context is None:
            presence = {}
            self.calc_percentile(member, presence,
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours_percentile')
            self.calc_percentile(
                member, presence, 'average_monthly_committee_presence',
                'average_monthly_committee_presence',
                'average_monthly_committee_presence_percentile')

            bills_statistics = {}
            # TODO: can move to an offline job
            self.calc_bill_stats(member, bills_statistics, 'proposed')
            self.calc_bill_stats(member, bills_statistics, 'pre')
            self.calc_bill_stats(member, bills_statistics, 'first')
            self.calc_bill_stats(member, bills_statistics, 'approved')

            agendas = self.get_agenda_data(member)
            # TODO: Move to model or service
            factional_discipline = VoteAction.objects.select_related(
                'vote').filter(member=member,
                               against_party=True,
                               vote__time__gt=current_knesset_start_date)

            votes_against_own_bills = VoteAction.objects.select_related(
                'vote').filter(member=member,
                               against_own_bill=True,
                               vote__time__gt=current_knesset_start_date)

            general_discipline_params = {
                'member': member,
                'vote__time__gt': current_knesset_start_date
            }
            is_coalition = member.current_party.is_coalition
            if is_coalition:
                general_discipline_params['against_coalition'] = True
            else:
                general_discipline_params['against_opposition'] = True
            general_discipline = VoteAction.objects.filter(
                **general_discipline_params).select_related('vote')

            about_videos = get_videos_queryset(member, group='about')[:1]
            if len(about_videos):
                about_video = about_videos[0]
                about_video_embed_link = about_video.embed_link
                about_video_image_link = about_video.image_link
            else:
                about_video_embed_link = ''
                about_video_image_link = ''

            related_videos = get_videos_queryset(member, group='related')
            related_videos = related_videos.filter(
                Q(published__gt=date.today() - timedelta(days=30))
                | Q(sticky=True)).order_by('sticky').order_by('-published')[:5]

            actions = actor_stream(member)

            for a in actions:
                a.actor = member

            legislation_actions = actor_stream(member).filter(
                verb__in=('proposed', 'joined'))

            # this ugly code groups all the committee actions according to plenum and committee
            # it stop iterating when both committee and plenum actions reach the maximum (MEMBER_INITIAL_DATA)
            # it also stops iterating when reaching 20 iterations
            committee_actions_more = {'committee': False, 'plenum': False}
            committee_actions = {'committee': [], 'plenum': []}
            i = 0
            for action in actor_stream(member).filter(verb='attended'):
                i = i + 1
                if i == 20:
                    # JESUS what language are we writing here? and is this a way to do a "limit"?
                    break
                committee_type = (action and action.target
                                  and action.target.committee
                                  and action.target.committee.type)
                if committee_type in ['plenum', 'committee']:
                    if len(committee_actions[committee_type]
                           ) == self.MEMBER_INITIAL_DATA:
                        committee_actions_more[committee_type] = True
                        if committee_actions_more[
                                'plenum'] == True and committee_actions_more[
                                    'committee'] == True:
                            break
                    else:
                        committee_actions[committee_type].append(action)

            committees_presence = []
            has_protocols_not_published = False
            committees = member.get_active_committees()
            for committee in committees:
                committee_member = committee.members_by_presence(
                    ids=[member.id])[0]
                committees_presence.append({
                    "committee":
                    committee,
                    "presence":
                    committee_member.meetings_percentage
                })
                if committee.protocol_not_published:
                    has_protocols_not_published = True

            committees_presence.sort(
                cmp=lambda x, y: y["presence"] - x["presence"])

            mmm_documents = member.mmm_documents.order_by('-publication_date')

            content_type = ContentType.objects.get_for_model(Member)
            num_followers = Follow.objects.filter(
                object_id=member.pk, content_type=content_type).count()

            protocol_part_annotation_actions = Action.objects.filter(
                actor_content_type=ContentType.objects.get_for_model(Person),
                actor_object_id__in=member.person.values_list('pk', flat=True),
                verb='got annotation for protocol part')

            # since parties are prefetch_releated, will list and slice them
            previous_parties = list(member.parties.all())[1:]
            cached_context = {
                'watched_member':
                watched,
                'num_followers':
                num_followers,
                'actions_more':
                actions.count() > self.MEMBER_INITIAL_DATA,
                'actions':
                actions[:self.MEMBER_INITIAL_DATA],
                'legislation_actions_more':
                legislation_actions.count() > self.MEMBER_INITIAL_DATA,
                'legislation_actions':
                legislation_actions[:self.MEMBER_INITIAL_DATA],
                'committee_actions_more':
                committee_actions_more['committee'],
                'committee_actions':
                committee_actions['committee'],
                'plenum_actions_more':
                committee_actions_more['plenum'],
                'plenum_actions':
                committee_actions['plenum'],
                'mmm_documents_more':
                mmm_documents.count() > self.MEMBER_INITIAL_DATA,
                'mmm_documents':
                mmm_documents[:self.MEMBER_INITIAL_DATA],
                'bills_statistics':
                bills_statistics,
                'agendas':
                agendas,
                'presence':
                presence,
                # 'current_knesset_start_date': date(2009, 2, 24), #obviously wrong, but does not look like used in template
                'factional_discipline':
                factional_discipline,
                'votes_against_own_bills':
                votes_against_own_bills,
                'general_discipline':
                general_discipline,
                'about_video_embed_link':
                about_video_embed_link,
                'about_video_image_link':
                about_video_image_link,
                'related_videos':
                related_videos,
                'num_related_videos':
                related_videos.count(),
                'INITIAL_DATA':
                self.MEMBER_INITIAL_DATA,
                'previous_parties':
                previous_parties,
                'committees_presence':
                committees_presence,
                'protocol_part_annotation_actions':
                protocol_part_annotation_actions,
                'has_protocols_not_published':
                has_protocols_not_published,
            }

            if not self.request.user.is_authenticated():
                cache.set('mk_%d' % member.id, cached_context,
                          settings.LONG_CACHE_TIME)

        context.update(cached_context)
        return context
Exemplo n.º 9
0
 def get_queryset(self):
     member = get_object_or_404(Member, pk=self.kwargs['pk'])
     actions = actor_stream(member)
     return actions
Exemplo n.º 10
0
 def items(self, member):
     stream = actor_stream(member)
     if stream:
         if self.verbs:
             stream = stream.filter(verb__in = self.verbs)
         return stream[:20]
Exemplo n.º 11
0
    def get_context_data(self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context['object']
        d = Knesset.objects.current_knesset().start_date
        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
            cached_context = None
        else:
            watched = False
            cached_context = cache.get('mk_%d' % member.id)

        if cached_context is None:
            presence = {}
            self.calc_percentile(member, presence,
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours_percentile')
            self.calc_percentile(
                member, presence, 'average_monthly_committee_presence',
                'average_monthly_committee_presence',
                'average_monthly_committee_presence_percentile')

            bills_statistics = {}
            self.calc_bill_stats(member, bills_statistics, 'proposed')
            self.calc_bill_stats(member, bills_statistics, 'pre')
            self.calc_bill_stats(member, bills_statistics, 'first')
            self.calc_bill_stats(member, bills_statistics, 'approved')

            if self.request.user.is_authenticated():
                agendas = Agenda.objects.get_selected_for_instance(
                    member, user=self.request.user, top=3, bottom=3)
            else:
                agendas = Agenda.objects.get_selected_for_instance(member,
                                                                   user=None,
                                                                   top=3,
                                                                   bottom=3)
            agendas = agendas['top'] + agendas['bottom']
            for agenda in agendas:
                agenda.watched = False
                agenda.totals = agenda.get_mks_totals(member)
            if self.request.user.is_authenticated():
                watched_agendas = self.request.user.get_profile().agendas
                for watched_agenda in watched_agendas:
                    if watched_agenda in agendas:
                        agendas[agendas.index(watched_agenda)].watched = True
                    else:
                        watched_agenda.score = watched_agenda.member_score(
                            member)
                        watched_agenda.watched = True
                        agendas.append(watched_agenda)
            agendas.sort(key=attrgetter('score'), reverse=True)

            factional_discipline = VoteAction.objects.select_related(
                'vote').filter(member=member,
                               against_party=True,
                               vote__time__gt=d)

            votes_against_own_bills = VoteAction.objects.select_related(
                'vote').filter(member=member,
                               against_own_bill=True,
                               vote__time__gt=d)

            general_discipline_params = {'member': member, 'vote__time__gt': d}
            is_coalition = member.current_party.is_coalition
            if is_coalition:
                general_discipline_params['against_coalition'] = True
            else:
                general_discipline_params['against_opposition'] = True
            general_discipline = VoteAction.objects.filter(
                **general_discipline_params).select_related('vote')

            about_videos = get_videos_queryset(member, group='about')[:1]
            if len(about_videos):
                about_video = about_videos[0]
                about_video_embed_link = about_video.embed_link
                about_video_image_link = about_video.image_link
            else:
                about_video_embed_link = ''
                about_video_image_link = ''

            related_videos = get_videos_queryset(member, group='related')
            related_videos = related_videos.filter(
                Q(published__gt=date.today() - timedelta(days=30))
                | Q(sticky=True)).order_by('sticky').order_by('-published')[:5]

            actions = actor_stream(member)

            for a in actions:
                a.actor = member

            legislation_actions = actor_stream(member).filter(
                verb__in=('proposed', 'joined'))

            # this ugly code groups all the committee actions according to plenum and committee
            # it stop iterating when both committee and plenum actions reach the maximum (MEMBER_INITIAL_DATA)
            # it also stops iterating when reaching 20 iterations
            committee_actions_more = {'committee': False, 'plenum': False}
            committee_actions = {'committee': [], 'plenum': []}
            i = 0
            for action in actor_stream(member).filter(verb='attended'):
                i = i + 1
                if i == 20:
                    break
                committee_type = (action and action.target
                                  and action.target.committee
                                  and action.target.committee.type)
                if committee_type in ['plenum', 'committee']:
                    if len(committee_actions[committee_type]
                           ) == self.MEMBER_INITIAL_DATA:
                        committee_actions_more[committee_type] = True
                        if committee_actions_more[
                                'plenum'] == True and committee_actions_more[
                                    'committee'] == True:
                            break
                    else:
                        committee_actions[committee_type].append(action)

            committees_presence = []
            committees = chain(
                member.committees.all(),
                member.chaired_committees.all(),
            )
            for committee in committees:
                committee_member = committee.members_by_presence(
                    ids=[member.id])[0]
                committees_presence.append({
                    "committee":
                    committee,
                    "presence":
                    committee_member.meetings_percentage
                })

            committees_presence.sort(
                cmp=lambda x, y: y["presence"] - x["presence"])

            mmm_documents = member.mmm_documents.order_by('-publication_date')

            content_type = ContentType.objects.get_for_model(Member)
            num_followers = Follow.objects.filter(
                object_id=member.pk, content_type=content_type).count()

            # since parties are prefetch_releated, will list and slice them
            previous_parties = list(member.parties.all())[1:]
            cached_context = {
                'watched_member':
                watched,
                'num_followers':
                num_followers,
                'actions_more':
                actions.count() > self.MEMBER_INITIAL_DATA,
                'actions':
                actions[:self.MEMBER_INITIAL_DATA],
                'legislation_actions_more':
                legislation_actions.count() > self.MEMBER_INITIAL_DATA,
                'legislation_actions':
                legislation_actions[:self.MEMBER_INITIAL_DATA],
                'committee_actions_more':
                committee_actions_more['committee'],
                'committee_actions':
                committee_actions['committee'],
                'plenum_actions_more':
                committee_actions_more['plenum'],
                'plenum_actions':
                committee_actions['plenum'],
                'mmm_documents_more':
                mmm_documents.count() > self.MEMBER_INITIAL_DATA,
                'mmm_documents':
                mmm_documents[:self.MEMBER_INITIAL_DATA],
                'bills_statistics':
                bills_statistics,
                'agendas':
                agendas,
                'presence':
                presence,
                'current_knesset_start_date':
                date(2009, 2, 24),
                'factional_discipline':
                factional_discipline,
                'votes_against_own_bills':
                votes_against_own_bills,
                'general_discipline':
                general_discipline,
                'about_video_embed_link':
                about_video_embed_link,
                'about_video_image_link':
                about_video_image_link,
                'related_videos':
                related_videos,
                'num_related_videos':
                related_videos.count(),
                'INITIAL_DATA':
                self.MEMBER_INITIAL_DATA,
                'previous_parties':
                previous_parties,
                'committees_presence':
                committees_presence,
            }

            if not self.request.user.is_authenticated():
                cache.set('mk_%d' % member.id, cached_context,
                          settings.LONG_CACHE_TIME)

        context.update(cached_context)
        return context
Exemplo n.º 12
0
    def get_context_data(self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context['object']
        d = Knesset.objects.current_knesset().start_date
        if self.request.user.is_authenticated():
            p = self.request.user.profiles.get()
            watched = member in p.members
            cached_context = None
        else:
            watched = False
            cached_context = cache.get('mk_%d' % member.id)

        if cached_context is None:
            presence = {}
            self.calc_percentile(member, presence,
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours_percentile')
            self.calc_percentile(member, presence,
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence_percentile')

            bills_statistics = {}
            self.calc_bill_stats(member, bills_statistics, 'proposed')
            self.calc_bill_stats(member, bills_statistics, 'pre')
            self.calc_bill_stats(member, bills_statistics, 'first')
            self.calc_bill_stats(member, bills_statistics, 'approved')

            agendas = self.get_agenda_data(member)

            factional_discipline = VoteAction.objects.select_related(
                'vote').filter(member=member,
                               against_party=True,
                               vote__time__gt=d)

            votes_against_own_bills = VoteAction.objects.select_related(
                'vote').filter(member=member,
                               against_own_bill=True,
                               vote__time__gt=d)

            general_discipline_params = {'member': member, 'vote__time__gt': d}
            is_coalition = member.current_party.is_coalition
            if is_coalition:
                general_discipline_params['against_coalition'] = True
            else:
                general_discipline_params['against_opposition'] = True
            general_discipline = VoteAction.objects.filter(
                **general_discipline_params).select_related('vote')

            about_videos = get_videos_queryset(member, group='about')[:1]
            if len(about_videos):
                about_video = about_videos[0]
                about_video_embed_link = about_video.embed_link
                about_video_image_link = about_video.image_link
            else:
                about_video_embed_link = ''
                about_video_image_link = ''

            related_videos = get_videos_queryset(member, group='related')
            related_videos = related_videos.filter(
                Q(published__gt=date.today() - timedelta(days=30))
                | Q(sticky=True)
            ).order_by('sticky').order_by('-published')[:5]

            actions = actor_stream(member)

            for a in actions:
                a.actor = member

            legislation_actions = actor_stream(member).filter(
                verb__in=('proposed', 'joined'))

            # this ugly code groups all the committee actions according to plenum and committee
            # it stop iterating when both committee and plenum actions reach the maximum (MEMBER_INITIAL_DATA)
            # it also stops iterating when reaching 20 iterations
            committee_actions_more = {'committee': False, 'plenum': False}
            committee_actions = {'committee': [], 'plenum': []}
            i = 0
            for action in actor_stream(member).filter(verb='attended'):
                i = i + 1
                if i == 20:
                    break
                committee_type = (action and action.target and
                                  action.target.committee and
                                  action.target.committee.type)
                if committee_type in ['plenum', 'committee']:
                    if len(committee_actions[committee_type]) == self.MEMBER_INITIAL_DATA:
                        committee_actions_more[committee_type] = True
                        if committee_actions_more['plenum'] == True and committee_actions_more[
                            'committee'] == True:
                            break
                    else:
                        committee_actions[committee_type].append(action)

            committees_presence = []
            has_protocols_not_published = False
            committees = chain(member.committees.all(),
                               member.chaired_committees.all(),
                               )
            for committee in committees:
                committee_member = committee.members_by_presence(ids=[member.id])[0]
                committees_presence.append({"committee": committee,
                                            "presence": committee_member.meetings_percentage})
                if committee.protocol_not_published:
                    has_protocols_not_published = True

            committees_presence.sort(cmp=lambda x, y: y["presence"] - x["presence"])

            mmm_documents = member.mmm_documents.order_by('-publication_date')

            content_type = ContentType.objects.get_for_model(Member)
            num_followers = Follow.objects.filter(
                object_id=member.pk,
                content_type=content_type).count()

            protocol_part_annotation_actions = Action.objects.filter(
                actor_content_type=ContentType.objects.get_for_model(Person),
                actor_object_id__in=member.person.values_list('pk', flat=True),
                verb='got annotation for protocol part'
            )

            # since parties are prefetch_releated, will list and slice them
            previous_parties = list(member.parties.all())[1:]
            cached_context = {
                'watched_member': watched,
                'num_followers': num_followers,
                'actions_more': actions.count() > self.MEMBER_INITIAL_DATA,
                'actions': actions[:self.MEMBER_INITIAL_DATA],
                'legislation_actions_more': legislation_actions.count() > self.MEMBER_INITIAL_DATA,
                'legislation_actions': legislation_actions[:self.MEMBER_INITIAL_DATA],
                'committee_actions_more': committee_actions_more['committee'],
                'committee_actions': committee_actions['committee'],
                'plenum_actions_more': committee_actions_more['plenum'],
                'plenum_actions': committee_actions['plenum'],
                'mmm_documents_more': mmm_documents.count() > self.MEMBER_INITIAL_DATA,
                'mmm_documents': mmm_documents[:self.MEMBER_INITIAL_DATA],
                'bills_statistics': bills_statistics,
                'agendas': agendas,
                'presence': presence,
                'current_knesset_start_date': date(2009, 2, 24),
                'factional_discipline': factional_discipline,
                'votes_against_own_bills': votes_against_own_bills,
                'general_discipline': general_discipline,
                'about_video_embed_link': about_video_embed_link,
                'about_video_image_link': about_video_image_link,
                'related_videos': related_videos,
                'num_related_videos': related_videos.count(),
                'INITIAL_DATA': self.MEMBER_INITIAL_DATA,
                'previous_parties': previous_parties,
                'committees_presence': committees_presence,
                'protocol_part_annotation_actions': protocol_part_annotation_actions,
                'has_protocols_not_published': has_protocols_not_published,
            }

            if not self.request.user.is_authenticated():
                cache.set('mk_%d' % member.id, cached_context,
                          settings.LONG_CACHE_TIME)

        context.update(cached_context)
        return context
Exemplo n.º 13
0
 def test_user1(self):
     self.assertEqual(map(unicode, actor_stream(self.user1)),
         [u'admin commented on CoolGroup 0 minutes ago', u'admin started following Two 0 minutes ago', u'admin joined CoolGroup 1 day ago'])
     first_activity = actor_stream(self.user1).get(verb='joined')
     self.assertEqual(first_activity.timestamp, self.yesterday)
     self.assertEqual(first_activity.description, 'hello group')
Exemplo n.º 14
0
    def get_context_data(self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context['object']

        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
            cached_context = None
        else:
            watched = False
            cached_context = cache.get('mk_%d' % member.id)

        if cached_context is None:
            presence = {}
            self.calc_percentile(member, presence,
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours_percentile')
            self.calc_percentile(member, presence,
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence_percentile')

            bills_statistics = {}
            self.calc_bill_stats(member,bills_statistics,'proposed')
            self.calc_bill_stats(member,bills_statistics,'pre')
            self.calc_bill_stats(member,bills_statistics,'first')
            self.calc_bill_stats(member,bills_statistics,'approved')

            if self.request.user.is_authenticated():
                agendas = Agenda.objects.get_selected_for_instance(member, user=self.request.user, top=3, bottom=3)
            else:
                agendas = Agenda.objects.get_selected_for_instance(member, user=None, top=3, bottom=3)
            agendas = agendas['top'] + agendas['bottom']
            for agenda in agendas:
                agenda.watched=False
                agenda.totals = agenda.get_mks_totals(member)
            if self.request.user.is_authenticated():
                watched_agendas = self.request.user.get_profile().agendas
                for watched_agenda in watched_agendas:
                    if watched_agenda in agendas:
                        agendas[agendas.index(watched_agenda)].watched = True
                    else:
                        watched_agenda.score = watched_agenda.member_score(member)
                        watched_agenda.watched = True
                        agendas.append(watched_agenda)
            agendas.sort(key=attrgetter('score'), reverse=True)

            factional_discipline = VoteAction.objects.select_related(
                'vote').filter(member = member, against_party=True)

            votes_against_own_bills = VoteAction.objects.select_related(
                'vote').filter(member=member, against_own_bill=True)

            general_discipline_params = { 'member' : member }
            is_coalition = member.current_party.is_coalition
            if is_coalition:
                general_discipline_params['against_coalition'] = True
            else:
                general_discipline_params['against_opposition'] = True
            general_discipline = VoteAction.objects.filter(
                **general_discipline_params).select_related('vote')


            about_videos=get_videos_queryset(member,group='about')[:1]
            if len(about_videos):
                about_video=about_videos[0]
                about_video_embed_link=about_video.embed_link
                about_video_image_link=about_video.image_link
            else:
                about_video_embed_link=''
                about_video_image_link=''

            related_videos=get_videos_queryset(member,group='related')
            related_videos=related_videos.filter(
                Q(published__gt=date.today()-timedelta(days=30))
                | Q(sticky=True)
            ).order_by('sticky').order_by('-published')[:5]

            actions = actor_stream(member)

            for a in actions:
                a.actor = member

            legislation_actions = actor_stream(member).filter(
                verb__in=('proposed', 'joined'))

            committee_actions = actor_stream(member).filter(verb='attended')

            mmm_documents = member.mmm_documents.order_by('-publication_date')

            content_type = ContentType.objects.get_for_model(Member)
            num_followers = Follow.objects.filter(object_id=member.pk, content_type=content_type).count()

            cached_context = {
                'watched_member': watched,
                'num_followers': num_followers,
                'actions_more': actions.count() > self.MEMBER_INITIAL_DATA,
                'actions': actions[:self.MEMBER_INITIAL_DATA],
                'legislation_actions_more': legislation_actions.count() > self.MEMBER_INITIAL_DATA,
                'legislation_actions': legislation_actions[:self.MEMBER_INITIAL_DATA],
                'committee_actions_more': committee_actions.count() > self.MEMBER_INITIAL_DATA,
                'committee_actions': committee_actions[:self.MEMBER_INITIAL_DATA],
                'mmm_documents_more': mmm_documents.count() > self.MEMBER_INITIAL_DATA,
                'mmm_documents': mmm_documents[:self.MEMBER_INITIAL_DATA],
                'bills_statistics': bills_statistics,
                'agendas': agendas,
                'presence': presence,
                'current_knesset_start_date': date(2009, 2, 24),
                'factional_discipline': factional_discipline,
                'votes_against_own_bills': votes_against_own_bills,
                'general_discipline': general_discipline,
                'about_video_embed_link': about_video_embed_link,
                'about_video_image_link': about_video_image_link,
                'related_videos': related_videos,
                'num_related_videos': related_videos.count(),
                'INITIAL_DATA': self.MEMBER_INITIAL_DATA,
            }

            if not self.request.user.is_authenticated():
                cache.set('mk_%d' % member.id, cached_context,
                          settings.LONG_CACHE_TIME)

        context.update(cached_context)
        return context
Exemplo n.º 15
0
    def get_context_data(self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context["object"]

        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
            cached_context = None
        else:
            watched = False
            cached_context = cache.get("mk_%d" % member.id)

        if cached_context is None:
            presence = {}
            self.calc_percentile(
                member,
                presence,
                "average_weekly_presence_hours",
                "average_weekly_presence_hours",
                "average_weekly_presence_hours_percentile",
            )
            self.calc_percentile(
                member,
                presence,
                "average_monthly_committee_presence",
                "average_monthly_committee_presence",
                "average_monthly_committee_presence_percentile",
            )

            bills_statistics = {}
            self.calc_bill_stats(member, bills_statistics, "proposed")
            self.calc_bill_stats(member, bills_statistics, "pre")
            self.calc_bill_stats(member, bills_statistics, "first")
            self.calc_bill_stats(member, bills_statistics, "approved")

            if self.request.user.is_authenticated():
                agendas = Agenda.objects.get_selected_for_instance(member, user=self.request.user, top=3, bottom=3)
            else:
                agendas = Agenda.objects.get_selected_for_instance(member, user=None, top=3, bottom=3)
            agendas = agendas["top"] + agendas["bottom"]
            for agenda in agendas:
                agenda.watched = False
                agenda.totals = agenda.get_mks_totals(member)
            if self.request.user.is_authenticated():
                watched_agendas = self.request.user.get_profile().agendas
                for watched_agenda in watched_agendas:
                    if watched_agenda in agendas:
                        agendas[agendas.index(watched_agenda)].watched = True
                    else:
                        watched_agenda.score = watched_agenda.member_score(member)
                        watched_agenda.watched = True
                        agendas.append(watched_agenda)
            agendas.sort(key=attrgetter("score"), reverse=True)

            factional_discipline = VoteAction.objects.select_related("vote").filter(member=member, against_party=True)

            votes_against_own_bills = VoteAction.objects.select_related("vote").filter(
                member=member, against_own_bill=True
            )

            general_discipline_params = {"member": member}
            is_coalition = member.current_party.is_coalition
            if is_coalition:
                general_discipline_params["against_coalition"] = True
            else:
                general_discipline_params["against_opposition"] = True
            general_discipline = VoteAction.objects.filter(**general_discipline_params).select_related("vote")

            about_videos = get_videos_queryset(member, group="about")[:1]
            if len(about_videos):
                about_video = about_videos[0]
                about_video_embed_link = about_video.embed_link
                about_video_image_link = about_video.image_link
            else:
                about_video_embed_link = ""
                about_video_image_link = ""

            related_videos = get_videos_queryset(member, group="related")
            related_videos = (
                related_videos.filter(Q(published__gt=date.today() - timedelta(days=30)) | Q(sticky=True))
                .order_by("sticky")
                .order_by("-published")[:5]
            )

            actions = actor_stream(member)

            for a in actions:
                a.actor = member

            legislation_actions = actor_stream(member).filter(verb__in=("proposed", "joined"))

            committee_actions = actor_stream(member).filter(verb="attended")

            mmm_documents = member.mmm_documents.order_by("-publication_date")

            content_type = ContentType.objects.get_for_model(Member)
            num_followers = Follow.objects.filter(object_id=member.pk, content_type=content_type).count()

            cached_context = {
                "watched_member": watched,
                "num_followers": num_followers,
                "actions_more": actions.count() > self.MEMBER_INITIAL_DATA,
                "actions": actions[: self.MEMBER_INITIAL_DATA],
                "legislation_actions_more": legislation_actions.count() > self.MEMBER_INITIAL_DATA,
                "legislation_actions": legislation_actions[: self.MEMBER_INITIAL_DATA],
                "committee_actions_more": committee_actions.count() > self.MEMBER_INITIAL_DATA,
                "committee_actions": committee_actions[: self.MEMBER_INITIAL_DATA],
                "mmm_documents_more": mmm_documents.count() > self.MEMBER_INITIAL_DATA,
                "mmm_documents": mmm_documents[: self.MEMBER_INITIAL_DATA],
                "bills_statistics": bills_statistics,
                "agendas": agendas,
                "presence": presence,
                "current_knesset_start_date": date(2009, 2, 24),
                "factional_discipline": factional_discipline,
                "votes_against_own_bills": votes_against_own_bills,
                "general_discipline": general_discipline,
                "about_video_embed_link": about_video_embed_link,
                "about_video_image_link": about_video_image_link,
                "related_videos": related_videos,
                "num_related_videos": related_videos.count(),
                "INITIAL_DATA": self.MEMBER_INITIAL_DATA,
            }

            if not self.request.user.is_authenticated():
                cache.set("mk_%d" % member.id, cached_context, settings.LONG_CACHE_TIME)

        context.update(cached_context)
        return context
Exemplo n.º 16
0
 def test_user2(self):
     self.assertEqual(map(unicode, actor_stream(self.user2)),
         [u'Two started following CoolGroup 0 minutes ago', u'Two joined CoolGroup 0 minutes ago'])
Exemplo n.º 17
0
    def get_context_data(self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context['object']
        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
        else:
            watched = False

        verbs = None
        if 'verbs' in self.request.GET:
            verbs_form = VerbsForm(self.request.GET)
            if verbs_form.is_valid():
                verbs = verbs_form.cleaned_data['verbs']
        if verbs == None:
            verbs = ('proposed', 'posted')
            verbs_form = VerbsForm({'verbs': verbs})

        presence = {}
        self.calc_percentile(member, presence, 'average_weekly_presence_hours',
                             'average_weekly_presence_hours',
                             'average_weekly_presence_hours_percentile')
        self.calc_percentile(member, presence,
                             'average_monthly_committee_presence',
                             'average_monthly_committee_presence',
                             'average_monthly_committee_presence_percentile')

        bills_statistics = {}
        self.calc_bill_stats(member, bills_statistics, 'proposed')
        self.calc_bill_stats(member, bills_statistics, 'pre')
        self.calc_bill_stats(member, bills_statistics, 'first')
        self.calc_bill_stats(member, bills_statistics, 'approved')

        bills_tags = Tag.objects.usage_for_queryset(member.bills.all(),
                                                    counts=True)
        #bills_tags.sort(key=lambda x:x.count,reverse=True)
        bills_tags = calculate_cloud(bills_tags)

        if self.request.user.is_authenticated():
            agendas = Agenda.objects.get_selected_for_instance(
                member, user=self.request.user, top=3, bottom=3)
        else:
            agendas = Agenda.objects.get_selected_for_instance(member,
                                                               user=None,
                                                               top=3,
                                                               bottom=3)
        agendas = agendas['top'] + agendas['bottom']
        for agenda in agendas:
            agenda.watched = False
        if self.request.user.is_authenticated():
            watched_agendas = self.request.user.get_profile().agendas
            for watched_agenda in watched_agendas:
                if watched_agenda in agendas:
                    agendas[agendas.index(watched_agenda)].watched = True
                else:
                    watched_agenda.score = watched_agenda.member_score(member)
                    watched_agenda.watched = True
                    agendas.append(watched_agenda)
        agendas.sort(key=attrgetter('score'), reverse=True)

        factional_discipline = VoteAction.objects.filter(member=member,
                                                         against_party=True)

        general_discipline_params = {'member': member}
        is_coalition = member.current_party.is_coalition
        if is_coalition:
            general_discipline_params['against_coalition'] = True
        else:
            general_discipline_params['against_opposition'] = True
        general_discipline = VoteAction.objects.filter(
            **general_discipline_params)

        context.update({
            'watched_member': watched,
            'actions': actor_stream(member).filter(verb__in=verbs),
            'verbs_form': verbs_form,
            'bills_statistics': bills_statistics,
            'bills_tags': bills_tags,
            'agendas': agendas,
            'presence': presence,
            'factional_discipline': factional_discipline,
            'general_discipline': general_discipline,
        })
        return context
Exemplo n.º 18
0
 def test_group(self):
     self.assertEqual(map(unicode, actor_stream(self.group)),
         [u'CoolGroup responded to admin: Sweet Group!... 0 minutes ago'])
Exemplo n.º 19
0
    def get_context_data (self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context['object']
        verbs = None
        if 'verbs' in self.request.GET:
            verbs_form = VerbsForm(self.request.GET)
            if verbs_form.is_valid():
                verbs = verbs_form.cleaned_data['verbs']
        if verbs==None:
            verbs = ('proposed', 'posted')
            verbs_form = VerbsForm({'verbs': verbs})
        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
            cached_context = None
        else:
            watched = False
            cached_context = cache.get('mk_%d_%s' % (member.id,
                                                     '_'.join(verbs)))

        if cached_context is None:
            presence = {}
            self.calc_percentile(member, presence,
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours_percentile' )
            self.calc_percentile(member, presence,
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence_percentile' )

            bills_statistics = {}
            self.calc_bill_stats(member,bills_statistics,'proposed')
            self.calc_bill_stats(member,bills_statistics,'pre')
            self.calc_bill_stats(member,bills_statistics,'first')
            self.calc_bill_stats(member,bills_statistics,'approved')

            bills_tags = Tag.objects.usage_for_queryset(member.bills.all(),counts=True)
            #bills_tags.sort(key=lambda x:x.count,reverse=True)
            bills_tags = calculate_cloud(bills_tags)

            if self.request.user.is_authenticated():
                agendas = Agenda.objects.get_selected_for_instance(member, user=self.request.user, top=3, bottom=3)
            else:
                agendas = Agenda.objects.get_selected_for_instance(member, user=None, top=3, bottom=3)
            agendas = agendas['top'] + agendas['bottom']
            for agenda in agendas:
                agenda.watched=False
            if self.request.user.is_authenticated():
                watched_agendas = self.request.user.get_profile().agendas
                for watched_agenda in watched_agendas:
                    if watched_agenda in agendas:
                        agendas[agendas.index(watched_agenda)].watched = True
                    else:
                        watched_agenda.score = watched_agenda.member_score(member)
                        watched_agenda.watched = True
                        agendas.append(watched_agenda)
            agendas.sort(key=attrgetter('score'), reverse=True)

            factional_discipline = VoteAction.objects.select_related(
                'vote').filter(member = member, against_party=True)

            votes_against_own_bills = VoteAction.objects.select_related(
                'vote').filter(member=member, against_own_bill=True)

            general_discipline_params = { 'member' : member }
            is_coalition = member.current_party.is_coalition
            if is_coalition:
                general_discipline_params['against_coalition'] = True
            else:
                general_discipline_params['against_opposition'] = True
            general_discipline = VoteAction.objects.filter(
                **general_discipline_params).select_related('vote')

            about_videos=get_videos_queryset(member,group='about')[:1]
            if len(about_videos):
                about_video=about_videos[0]
                about_video_embed_link=about_video.embed_link
                about_video_image_link=about_video.image_link
            else:
                about_video_embed_link=''
                about_video_image_link=''

            related_videos=get_videos_queryset(member,group='related')
            related_videos=related_videos.filter(
                Q(published__gt=date.today()-timedelta(days=30))
                | Q(sticky=True)
            ).order_by('sticky').order_by('-published')[:5]

            actions = actor_stream(member).filter(
                verb__in=verbs)
            for a in actions:
                a.actor = member
            cached_context = {'watched_member': watched,
                'actions':actions,
                'verbs_form': verbs_form,
                'bills_statistics':bills_statistics,
                'bills_tags':bills_tags,
                'agendas':agendas,
                'presence':presence,
                'factional_discipline':factional_discipline,
                'votes_against_own_bills':votes_against_own_bills,
                'general_discipline':general_discipline,
                'about_video_embed_link':about_video_embed_link,
                'about_video_image_link':about_video_image_link,
                'related_videos':related_videos,
                'num_related_videos':related_videos.count()
               }
            if not self.request.user.is_authenticated():
                cache.set('mk_%d_%s' % (member.id, '_'.join(verbs)),
                                        cached_context,
                                        settings.LONG_CACHE_TIME)
        context.update(cached_context)
        return context
Exemplo n.º 20
0
    def get_context_data (self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context['object']
        verbs = None
        if 'verbs' in self.request.GET:
            verbs_form = VerbsForm(self.request.GET)
            if verbs_form.is_valid():
                verbs = verbs_form.cleaned_data['verbs']
        if verbs==None:
            verbs = ('proposed', 'posted')
            verbs_form = VerbsForm({'verbs': verbs})
        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
            cached_context = None
        else:
            watched = False
            cached_context = cache.get('mk_%d_%s' % (member.id,
                                                     '_'.join(verbs)))

        if cached_context is None:
            presence = {}
            self.calc_percentile(member, presence,
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours_percentile' )
            self.calc_percentile(member, presence,
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence_percentile' )

            bills_statistics = {}
            self.calc_bill_stats(member,bills_statistics,'proposed')
            self.calc_bill_stats(member,bills_statistics,'pre')
            self.calc_bill_stats(member,bills_statistics,'first')
            self.calc_bill_stats(member,bills_statistics,'approved')

            bills_tags = Tag.objects.usage_for_queryset(member.bills.all(),counts=True)
            #bills_tags.sort(key=lambda x:x.count,reverse=True)
            bills_tags = calculate_cloud(bills_tags)

            if self.request.user.is_authenticated():
                agendas = Agenda.objects.get_selected_for_instance(member, user=self.request.user, top=3, bottom=3)
            else:
                agendas = Agenda.objects.get_selected_for_instance(member, user=None, top=3, bottom=3)
            agendas = agendas['top'] + agendas['bottom']
            for agenda in agendas:
                agenda.watched=False
            if self.request.user.is_authenticated():
                watched_agendas = self.request.user.get_profile().agendas
                for watched_agenda in watched_agendas:
                    if watched_agenda in agendas:
                        agendas[agendas.index(watched_agenda)].watched = True
                    else:
                        watched_agenda.score = watched_agenda.member_score(member)
                        watched_agenda.watched = True
                        agendas.append(watched_agenda)
            agendas.sort(key=attrgetter('score'), reverse=True)

            factional_discipline = VoteAction.objects.select_related(
                'vote').filter(member = member, against_party=True)

            votes_against_own_bills = VoteAction.objects.select_related(
                'vote').filter(member=member, against_own_bill=True)

            general_discipline_params = { 'member' : member }
            is_coalition = member.current_party.is_coalition
            if is_coalition:
                general_discipline_params['against_coalition'] = True
            else:
                general_discipline_params['against_opposition'] = True
            general_discipline = VoteAction.objects.filter(
                **general_discipline_params).select_related('vote')

            about_videos=get_videos_queryset(member,group='about')[:1]
            if len(about_videos):
                about_video=about_videos[0]
                about_video_embed_link=about_video.embed_link
                about_video_image_link=about_video.image_link
            else:
                about_video_embed_link=''
                about_video_image_link=''

            related_videos=get_videos_queryset(member,group='related')
            related_videos=related_videos.filter(
                Q(published__gt=date.today()-timedelta(days=30))
                | Q(sticky=True)
            ).order_by('sticky').order_by('-published')[:5]

            actions = actor_stream(member).filter(
                verb__in=verbs)
            for a in actions:
                a.actor = member
            cached_context = {'watched_member': watched,
                'actions':actions,
                'verbs_form': verbs_form,
                'bills_statistics':bills_statistics,
                'bills_tags':bills_tags,
                'agendas':agendas,
                'presence':presence,
                'factional_discipline':factional_discipline,
                'votes_against_own_bills':votes_against_own_bills,
                'general_discipline':general_discipline,
                'about_video_embed_link':about_video_embed_link,
                'about_video_image_link':about_video_image_link,
                'related_videos':related_videos,
                'num_related_videos':related_videos.count()
               }
            if not self.request.user.is_authenticated():
                cache.set('mk_%d_%s' % (member.id, '_'.join(verbs)),
                                        cached_context,
                                        settings.LONG_CACHE_TIME)
        context.update(cached_context)
        return context
Exemplo n.º 21
0
    def get_context (self):
        context = super(MemberDetailView, self).get_context()
        member = context['object']
        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
        else:
            watched = False
            
        verbs = None
        if 'verbs' in self.request.GET:
            verbs_form = VerbsForm(self.request.GET)
            if verbs_form.is_valid():
                verbs = verbs_form.cleaned_data['verbs']
        if verbs==None:
            verbs = ('proposed', 'posted')
            verbs_form = VerbsForm({'verbs': verbs})

        presence = {}
        self.calc_percentile(member, presence, 
                             'average_weekly_presence_hours', 
                             'average_weekly_presence_hours',
                             'average_weekly_presence_hours_percentile' )
        self.calc_percentile(member, presence, 
                             'average_monthly_committee_presence', 
                             'average_monthly_committee_presence',
                             'average_monthly_committee_presence_percentile' )

        bills_statistics = {}
        self.calc_bill_stats(member,bills_statistics,'proposed')
        self.calc_bill_stats(member,bills_statistics,'pre')
        self.calc_bill_stats(member,bills_statistics,'first')
        self.calc_bill_stats(member,bills_statistics,'approved')

        bills_tags = Tag.objects.usage_for_queryset(member.bills.all(),counts=True)
        #bills_tags.sort(key=lambda x:x.count,reverse=True)
        bills_tags = tagging.utils.calculate_cloud(bills_tags)

        if self.request.user.is_authenticated():
            agendas = Agenda.objects.get_selected_for_instance(member, user=self.request.user, top=3, bottom=3)
        else:
            agendas = Agenda.objects.get_selected_for_instance(member, user=None, top=3, bottom=3)
        agendas = agendas['top'] + agendas['bottom']
        for agenda in agendas:
            agenda.watched=False
        if self.request.user.is_authenticated():
            watched_agendas = self.request.user.get_profile().agendas
            for watched_agenda in watched_agendas:
                if watched_agenda in agendas:
                    agendas[agendas.index(watched_agenda)].watched = True
                else:
                    watched_agenda.score = watched_agenda.member_score(member)
                    watched_agenda.watched = True
                    agendas.append(watched_agenda)
        agendas.sort(key=attrgetter('score'), reverse=True)
        
        factional_discipline = VoteAction.objects.filter(member = member, against_party=True)

        general_discipline_params = { 'member' : member }
        is_coalition = member.current_party.is_coalition
        if is_coalition:
            general_discipline_params['against_coalition'] = True
        else:
            general_discipline_params['against_opposition'] = True
        general_discipline = VoteAction.objects.filter(**general_discipline_params)
        
        context.update({'watched_member': watched,
                'actions': actor_stream(member).filter(verb__in=verbs),
                'verbs_form': verbs_form,
                'bills_statistics':bills_statistics,
                'bills_tags':bills_tags,
                'agendas':agendas,
                'presence':presence,
                'factional_discipline':factional_discipline,
                'general_discipline':general_discipline,
               })
        return context
Exemplo n.º 22
0
    def get_context_data(self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context['object']

        if self.request.user.is_authenticated():
            p = self.request.user.get_profile()
            watched = member in p.members
            cached_context = None
        else:
            watched = False
            cached_context = cache.get('mk_%d' % member.id)

        if cached_context is None:
            presence = {}
            self.calc_percentile(member, presence,
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours_percentile')
            self.calc_percentile(
                member, presence, 'average_monthly_committee_presence',
                'average_monthly_committee_presence',
                'average_monthly_committee_presence_percentile')

            bills_statistics = {}
            self.calc_bill_stats(member, bills_statistics, 'proposed')
            self.calc_bill_stats(member, bills_statistics, 'pre')
            self.calc_bill_stats(member, bills_statistics, 'first')
            self.calc_bill_stats(member, bills_statistics, 'approved')

            if self.request.user.is_authenticated():
                agendas = Agenda.objects.get_selected_for_instance(
                    member, user=self.request.user, top=3, bottom=3)
            else:
                agendas = Agenda.objects.get_selected_for_instance(member,
                                                                   user=None,
                                                                   top=3,
                                                                   bottom=3)
            agendas = agendas['top'] + agendas['bottom']
            for agenda in agendas:
                agenda.watched = False
                agenda.totals = agenda.get_mks_totals(member)
            if self.request.user.is_authenticated():
                watched_agendas = self.request.user.get_profile().agendas
                for watched_agenda in watched_agendas:
                    if watched_agenda in agendas:
                        agendas[agendas.index(watched_agenda)].watched = True
                    else:
                        watched_agenda.score = watched_agenda.member_score(
                            member)
                        watched_agenda.watched = True
                        agendas.append(watched_agenda)
            agendas.sort(key=attrgetter('score'), reverse=True)

            factional_discipline = VoteAction.objects.select_related(
                'vote').filter(member=member, against_party=True)

            votes_against_own_bills = VoteAction.objects.select_related(
                'vote').filter(member=member, against_own_bill=True)

            general_discipline_params = {'member': member}
            is_coalition = member.current_party.is_coalition
            if is_coalition:
                general_discipline_params['against_coalition'] = True
            else:
                general_discipline_params['against_opposition'] = True
            general_discipline = VoteAction.objects.filter(
                **general_discipline_params).select_related('vote')

            about_videos = get_videos_queryset(member, group='about')[:1]
            if len(about_videos):
                about_video = about_videos[0]
                about_video_embed_link = about_video.embed_link
                about_video_image_link = about_video.image_link
            else:
                about_video_embed_link = ''
                about_video_image_link = ''

            related_videos = get_videos_queryset(member, group='related')
            related_videos = related_videos.filter(
                Q(published__gt=date.today() - timedelta(days=30))
                | Q(sticky=True)).order_by('sticky').order_by('-published')[:5]

            actions = actor_stream(member)

            for a in actions:
                a.actor = member

            legislation_actions = actor_stream(member).filter(
                verb__in=('proposed', 'joined'))

            committee_actions = actor_stream(member).filter(verb='attended')

            mmm_documents = member.mmm_documents.order_by('-publication_date')

            content_type = ContentType.objects.get_for_model(Member)
            num_followers = Follow.objects.filter(
                object_id=member.pk, content_type=content_type).count()

            cached_context = {
                'watched_member':
                watched,
                'num_followers':
                num_followers,
                'actions_more':
                actions.count() > self.MEMBER_INITIAL_DATA,
                'actions':
                actions[:self.MEMBER_INITIAL_DATA],
                'legislation_actions_more':
                legislation_actions.count() > self.MEMBER_INITIAL_DATA,
                'legislation_actions':
                legislation_actions[:self.MEMBER_INITIAL_DATA],
                'committee_actions_more':
                committee_actions.count() > self.MEMBER_INITIAL_DATA,
                'committee_actions':
                committee_actions[:self.MEMBER_INITIAL_DATA],
                'mmm_documents_more':
                mmm_documents.count() > self.MEMBER_INITIAL_DATA,
                'mmm_documents':
                mmm_documents[:self.MEMBER_INITIAL_DATA],
                'bills_statistics':
                bills_statistics,
                'agendas':
                agendas,
                'presence':
                presence,
                'current_knesset_start_date':
                date(2009, 2, 24),
                'factional_discipline':
                factional_discipline,
                'votes_against_own_bills':
                votes_against_own_bills,
                'general_discipline':
                general_discipline,
                'about_video_embed_link':
                about_video_embed_link,
                'about_video_image_link':
                about_video_image_link,
                'related_videos':
                related_videos,
                'num_related_videos':
                related_videos.count(),
                'INITIAL_DATA':
                self.MEMBER_INITIAL_DATA,
            }

            if not self.request.user.is_authenticated():
                cache.set('mk_%d' % member.id, cached_context,
                          settings.LONG_CACHE_TIME)

        context.update(cached_context)
        return context
Exemplo n.º 23
0
 def get_queryset(self):
     member = get_object_or_404(Member, pk=self.kwargs['pk'])
     actions = actor_stream(member)
     return actions
Exemplo n.º 24
0
    def get_context_data(self, **kwargs):
        context = super(MemberDetailView, self).get_context_data(**kwargs)
        member = context['object']
        user = self.request.user
        authenticated = user.is_authenticated()

        if authenticated:
            profile = user.get_profile()
            watched = member in profile.members
            cached_context = None
        else:
            watched = False
            cached_context = cache.get('mk_{}'.format(member.id))

        if not cached_context:
            presence = {}
            self.calc_percentile(member, presence,
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours',
                                 'average_weekly_presence_hours_percentile')
            self.calc_percentile(member, presence,
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence',
                                 'average_monthly_committee_presence_percentile')

            bills_statistics = {}
            for s in ('proposed', 'pre', 'first', 'approved'):
                self.calc_bill_stats(member,bills_statistics, s)
            
            agendas = Agenda.objects.get_selected_for_instance(member,
                                        user=user if authenticated else None, top=3, bottom=3)
            for agenda in agendas:
                agenda.watched = False
                agenda.totals = agenda.get_mks_totals(member)
            if authenticated:
                for watched_agenda in profile.agendas:
                    if watched_agenda in agendas:
                        agendas[agendas.index(watched_agenda)].watched = True
                    else:
                        watched_agenda.score = watched_agenda.member_score(member)
                        watched_agenda.watched = True
                        agendas.append(watched_agenda)
            agendas.sort(key=attrgetter('score'), reverse=True)

            factional_discipline = VoteAction.objects.select_related(
                'vote').filter(member=member, against_party=True)

            votes_against_own_bills = VoteAction.objects.select_related(
                'vote').filter(member=member, against_own_bill=True)

            general_discipline_params = { 'member' : member }
            side = 'against_coalition' if member.current_party.is_coalition else 'against_opposition'
            general_discipline_params[side] = True
            general_discipline = VoteAction.objects.filter(
                **general_discipline_params).select_related('vote')


            about_videos = get_videos_queryset(member,group='about')
            try:
                about_video_embed_link=about_videos[0].embed_link
                about_video_image_link=about_videos[0].image_link
            except IndexError: 
                about_video_embed_link=''
                about_video_image_link=''
                
            related_videos = get_videos_queryset(member,group='related').filter(
                                    Q(published__gt=date.today()-timedelta(days=30))
                                    | Q(sticky=True)
                                ).order_by('sticky').order_by('-published')[:5]

            actions = actor_stream(member)

            for a in actions:
                a.actor = member

            legislation_actions = actor_stream(member).filter(
                verb__in=('proposed', 'joined'))

            committee_actions = actor_stream(member).filter(verb='attended')
            mmm_documents = member.mmm_documents.order_by('-publication_date')
            content_type = ContentType.objects.get_for_model(Member)

            # since parties are prefetch_releated, will list and slice them
            previous_parties = list(member.parties.all())[1:]
            cached_context = {
                'watched_member': watched,
                'num_followers': Follow.objects.filter(object_id=member.pk, content_type=content_type).count(),
                'actions_more': actions.count() > self.MEMBER_INITIAL_DATA,
                'actions': actions[:self.MEMBER_INITIAL_DATA],
                'legislation_actions_more': legislation_actions.count() > self.MEMBER_INITIAL_DATA,
                'legislation_actions': legislation_actions[:self.MEMBER_INITIAL_DATA],
                'committee_actions_more': committee_actions.count() > self.MEMBER_INITIAL_DATA,
                'committee_actions': committee_actions[:self.MEMBER_INITIAL_DATA],
                'mmm_documents_more': mmm_documents.count() > self.MEMBER_INITIAL_DATA,
                'mmm_documents': mmm_documents[:self.MEMBER_INITIAL_DATA],
                'bills_statistics': bills_statistics,
                'agendas': agendas,
                'presence': presence,
                'current_knesset_start_date': date(2009, 2, 24),
                'factional_discipline': factional_discipline,
                'votes_against_own_bills': votes_against_own_bills,
                'general_discipline': general_discipline,
                'about_video_embed_link': about_video_embed_link,
                'about_video_image_link': about_video_image_link,
                'related_videos': related_videos,
                'num_related_videos': related_videos.count(),
                'INITIAL_DATA': self.MEMBER_INITIAL_DATA,
                'previous_parties': previous_parties,
            }

            if not authenticated:
                cache.set('mk_{}'.format(member.id), cached_context,
                          settings.LONG_CACHE_TIME)

        context.update(cached_context)
        return context