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 []
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, }
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
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))
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))
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
def items(self, obj): i = actor_stream(obj) if i: return i[:30] return []
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
def get_queryset(self): member = get_object_or_404(Member, pk=self.kwargs['pk']) actions = actor_stream(member) return actions
def items(self, member): stream = actor_stream(member) if stream: if self.verbs: stream = stream.filter(verb__in = self.verbs) return stream[:20]
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
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
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')
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
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
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'])
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
def test_group(self): self.assertEqual(map(unicode, actor_stream(self.group)), [u'CoolGroup responded to admin: Sweet Group!... 0 minutes ago'])
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
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
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
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
def get_queryset(self): member = get_object_or_404(Member, pk=self.kwargs['pk']) actions = actor_stream(member) return actions
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