def get_context_data(self, **kwargs): context = super(PollContextMixin, self).get_context_data(**kwargs) org = self.request.org context['org'] = org main_poll = self.derive_main_poll() context['latest_poll'] = main_poll context['categories'] = Category.objects.filter(org=org, is_active=True).order_by('name') if org.is_district: context['polls'] = Poll.get_public_polls(org=org).order_by('-poll_date') else: object_org = org.__class__.objects if org.is_country: orgs = object_org.filter(country=org) if org.is_state: orgs = object_org.filter(state=org) context['polls'] = Poll.get_parent_polls(org=org, children=orgs).order_by('-poll_date') context['related_stories'] = [] if main_poll: related_stories = Story.objects.filter(org=org, is_active=True, category=main_poll.category) related_stories = related_stories.order_by('-featured', '-created_on') context['related_stories'] = related_stories return context
def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) org = self.request.org context['org'] = org latest_poll = Poll.get_main_poll(org) context['latest_poll'] = latest_poll if context['latest_poll']: context['trending_words'] = latest_poll.get_trending_words() brick_poll_ids = Poll.get_brick_polls_ids(org) context['recent_polls'] = Poll.objects.filter(id__in=brick_poll_ids) context['stories'] = Story.objects.filter(org=org, is_active=True, featured=True).order_by('-created_on') videos = Video.objects.filter(is_active=True, org=org).order_by('-created_on') context['videos'] = videos news = NewsItem.objects.filter(is_active=True, org=org).order_by('-created_on') context['news'] = news.count() > 0 context['most_active_regions'] = org.get_regions_stats() # global counter if org.get_config('common.is_global'): context['global_counter'] = get_global_count() context['gender_stats'] = org.get_gender_stats() context['age_stats'] = org.get_age_stats() context['reporters'] = org.get_reporters_count() return context
def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) org = self.request.org context["org"] = org latest_poll = Poll.get_main_poll(org) context["latest_poll"] = latest_poll if context["latest_poll"]: context["trending_words"] = latest_poll.get_trending_words() brick_poll_ids = Poll.get_brick_polls_ids(org) context["recent_polls"] = Poll.objects.filter(id__in=brick_poll_ids).order_by("-created_on") context["stories"] = Story.objects.filter(org=org, is_active=True, featured=True).order_by("-created_on") videos = Video.objects.filter(is_active=True, org=org).order_by("-created_on") context["videos"] = videos news = NewsItem.objects.filter(is_active=True, org=org).order_by("-created_on") context["news"] = news.count() > 0 context["most_active_regions"] = org.get_regions_stats() # global counter if org.get_config("common.is_global"): context["global_counter"] = get_global_count() context["gender_stats"] = org.get_gender_stats() context["age_stats"] = org.get_age_stats() context["reporters"] = org.get_reporters_count() return context
def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) org = self.request.org context["org"] = org latest_poll = Poll.get_main_poll(org) context["latest_poll"] = latest_poll if context["latest_poll"]: context["trending_words"] = latest_poll.get_trending_words() brick_poll_ids = Poll.get_brick_polls_ids(org) context["recent_polls"] = Poll.objects.filter(id__in=brick_poll_ids).order_by("-created_on") context["stories"] = Story.objects.filter(org=org, is_active=True, featured=True).order_by("-created_on") videos = Video.objects.filter(is_active=True, org=org).order_by("-created_on") context["videos"] = videos news = NewsItem.objects.filter(is_active=True, org=org).order_by("-created_on") context["news"] = news.count() > 0 context["most_active_regions"] = org.get_regions_stats() # global counter if org.get_config("common.is_global"): context["global_counter"] = get_global_count() context["gender_stats"] = org.get_gender_stats() context["age_stats"] = org.get_age_stats() context["reporters"] = org.get_reporters_count() return context
def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) org = self.request.org context['org'] = org latest_poll = Poll.get_main_poll(org) context['latest_poll'] = latest_poll if context['latest_poll']: context['trending_words'] = latest_poll.get_trending_words() context['recent_polls'] = Poll.get_brick_polls(org) context['stories'] = Story.objects.filter(org=org, is_active=True, featured=True).order_by('created_on') other_stories = Story.objects.filter(org=org, is_active=True).exclude(pk__in=context['stories']) other_stories = other_stories.order_by('created_on') context['other_stories'] = other_stories videos = Video.objects.filter(is_active=True, org=org).order_by('-created_on') context['videos'] = videos news = NewsItem.objects.filter(is_active=True, org=org).order_by('-created_on') context['news'] = news.count() > 0 context['most_active_regions'] = org.get_most_active_regions() return context
def get_context_data(self, **kwargs): context = super(PollContextMixin, self).get_context_data(**kwargs) org = self.request.org context["org"] = org context["gender_stats"] = org.get_gender_stats() context["age_stats"] = org.get_age_stats() context["states"] = [dict(id=k, name=v) for k, v in Boundary.get_org_top_level_boundaries_name(org).items()] main_poll = self.derive_main_poll() context["latest_poll"] = main_poll if main_poll: top_question = main_poll.get_questions().first() context["top_question"] = top_question if top_question: gender_stats = top_question.get_gender_stats() total_gender = 0 for elt in gender_stats: total_gender += elt["set"] gender_stats_dict = { elt["label"].lower(): dict( count=elt["set"], percentage=int(round(elt["set"] * 100 / float(total_gender))) ) for elt in gender_stats if total_gender } context["gender_stats"] = gender_stats_dict age_stats = top_question.get_age_stats() total_age = 0 for elt in age_stats: total_age += elt["set"] context["age_stats"] = [ dict(name=elt["label"], y=int(round(elt["set"] * 100 / float(total_age)))) for elt in age_stats if total_age ] context["locations_stats"] = top_question.get_location_stats() context["categories"] = ( Category.objects.filter(org=org, is_active=True) .prefetch_related(Prefetch("polls", queryset=Poll.objects.filter(is_active=True).order_by("-poll_date"))) .order_by("name") ) context["polls"] = Poll.get_public_polls(org=org).order_by("-poll_date") context["related_stories"] = [] if main_poll: related_stories = Story.objects.filter(org=org, is_active=True, category=main_poll.category) related_stories = related_stories.order_by("-featured", "-created_on") context["related_stories"] = related_stories context["main_stories"] = Story.objects.filter(org=org, featured=True, is_active=True).order_by("-created_on") return context
def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) org = self.request.org context["org"] = org latest_poll = Poll.get_main_poll(org) context["latest_poll"] = latest_poll cache_value = cache.get("shared_sites", None) if not cache_value: get_shared_sites_count() # global counters context["global_contact_count"] = get_shared_global_count() context["global_org_count"] = get_shared_countries_number() context["gender_stats"] = org.get_gender_stats() context["age_stats"] = json.loads(org.get_age_stats()) context["reporters"] = org.get_reporters_count() context["feat_images"] = range(10) # fake photos, generated from stories that are featured and have a photo context["stories_photos"] = ( Story.objects.filter(org=org, featured=True, is_active=True) .exclude(images=None) .order_by("-created_on")[4:] ) context["main_stories"] = Story.objects.filter(org=org, featured=True, is_active=True).order_by("-created_on") return context
def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) org = self.request.org context["org"] = org latest_poll = Poll.get_main_poll(org) context["latest_poll"] = latest_poll if context["latest_poll"]: context["trending_words"] = latest_poll.get_trending_words() brick_poll_ids = Poll.get_brick_polls_ids(org) context["recent_polls"] = Poll.objects.filter( id__in=brick_poll_ids).order_by("-created_on") context["stories"] = Story.objects.filter( org=org, is_active=True, featured=True).order_by("-created_on") videos = Video.objects.filter(is_active=True, org=org).order_by("-created_on") context["videos"] = videos news = NewsItem.objects.filter(is_active=True, org=org).order_by("-created_on") context["news"] = news.count() > 0 context["most_active_regions"] = org.get_regions_stats() # global counters context["global_contact_count"] = get_global_count() context["global_org_count"] = Org.objects.filter( is_active=True).count() + len(settings.PREVIOUS_ORG_SITES) context["gender_stats"] = org.get_gender_stats() context["age_stats"] = json.loads(org.get_age_stats()) context["reporters"] = org.get_reporters_count() context["feat_images"] = range(10) # fake photos, generated from stories that are featured and have a photo context["photos"] = (Story.objects.filter( org=org, featured=True, is_active=True).exclude(images=None).order_by("-created_on")[4:]) context["main_stories"] = Story.objects.filter( org=org, featured=True, is_active=True).order_by("-created_on") return context
def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) org = self.request.org context['org'] = org latest_poll = Poll.get_main_poll(org) context['latest_poll'] = latest_poll if context['latest_poll']: context['trending_words'] = latest_poll.get_trending_words() context['recent_polls'] = Poll.get_brick_polls(org) context['stories'] = Story.objects.filter(org=org, is_active=True, featured=True).order_by('created_on') other_stories = Story.objects.filter(org=org, is_active=True).exclude(pk__in=context['stories']) other_stories = other_stories.order_by('created_on') context['other_stories'] = other_stories videos = Video.objects.filter(is_active=True, org=org).order_by('-created_on') context['videos'] = videos news = NewsItem.objects.filter(is_active=True, org=org).order_by('-created_on') context['news'] = news.count() > 0 # we use gender label to estimate the most active region if org.get_config('gender_label'): context['most_active_regions'] = org.get_most_active_regions() # global counter if org.get_config('is_global'): context['global_counter'] = get_global_count() context['gender_stats'] = org.get_gender_stats() context['age_stats'] = org.get_age_stats() context['reporters'] = org.get_reporters_count() return context
def get_context_data(self, **kwargs): context = super(PollContextMixin, self).get_context_data(**kwargs) org = self.request.org context["org"] = org main_poll = self.derive_main_poll() context["latest_poll"] = main_poll context["categories"] = Category.objects.filter(org=org, is_active=True).order_by("name") context["polls"] = Poll.get_public_polls(org=org).order_by("-poll_date") context["related_stories"] = [] if main_poll: related_stories = Story.objects.filter(org=org, is_active=True, category=main_poll.category) related_stories = related_stories.order_by("-featured", "-created_on") context["related_stories"] = related_stories return context
def get_context_data(self, **kwargs): context = super(PollContextMixin, self).get_context_data(**kwargs) org = self.request.org context['org'] = org main_poll = self.derive_main_poll() context['latest_poll'] = main_poll context['categories'] = Category.objects.filter(org=org, is_active=True).order_by('name') context['polls'] = Poll.get_public_polls(org=org).order_by('-poll_date') context['related_stories'] = [] if main_poll: related_stories = Story.objects.filter(org=org, is_active=True, category=main_poll.category) related_stories = related_stories.order_by('-featured', '-created_on') context['related_stories'] = related_stories return context
def get_context_data(self, **kwargs): context = super(PollContextMixin, self).get_context_data(**kwargs) org = self.request.org context["org"] = org main_poll = self.derive_main_poll() context["latest_poll"] = main_poll context["categories"] = Category.objects.filter(org=org, is_active=True).order_by("name") context["polls"] = Poll.get_public_polls(org=org).order_by("-poll_date") context["related_stories"] = [] if main_poll: related_stories = Story.objects.filter(org=org, is_active=True, category=main_poll.category) related_stories = related_stories.order_by("-featured", "-created_on") context["related_stories"] = related_stories return context
def get_context_data(self, **kwargs): context = super(PollContextMixin, self).get_context_data(**kwargs) org = self.request.org context['org'] = org main_poll = self.derive_main_poll() context['latest_poll'] = main_poll context['categories'] = Category.objects.filter( org=org, is_active=True).order_by('name') context['polls'] = Poll.get_public_polls( org=org).order_by('-poll_date') context['related_stories'] = [] if main_poll: related_stories = Story.objects.filter(org=org, is_active=True, category=main_poll.category) related_stories = related_stories.order_by('-featured', '-created_on') context['related_stories'] = related_stories return context
def fetch_main_poll_results(org): main_poll = Poll.get_main_poll(org) if main_poll: _fetch_org_polls_results(org, [main_poll])
def get_context_data(self, **kwargs): context = super(PollContextMixin, self).get_context_data(**kwargs) org = self.request.org context["org"] = org context["states"] = sorted( [dict(id=k, name=v) for k, v in Boundary.get_org_top_level_boundaries_name(org).items()], key=lambda c: c["name"], ) main_poll = self.derive_main_poll() context["latest_poll"] = main_poll if main_poll: top_question = main_poll.get_questions().first() context["top_question"] = top_question if top_question: gender_stats = top_question.get_gender_stats() total_gender = 0 for elt in gender_stats: total_gender += elt["set"] gender_label_dict = {str(v.lower()): k.lower() for k, v in GenderSegment.GENDERS.items()} gender_stats_dict = { gender_label_dict.get(elt["label"].lower()): dict( count=elt["set"], percentage=int(round(elt["set"] * 100 / float(total_gender))) ) for elt in gender_stats if total_gender } context["gender_stats"] = gender_stats_dict age_stats = top_question.get_age_stats() total_age = 0 for elt in age_stats: total_age += elt["set"] context["age_stats"] = [ dict(name=elt["label"], y=int(round(elt["set"] * 100 / float(total_age)))) for elt in age_stats if total_age ] context["locations_stats"] = top_question.get_location_stats() if not main_poll or not main_poll.get_questions().first(): context["gender_stats"] = org.get_gender_stats() context["age_stats"] = org.get_age_stats() polls = Poll.get_public_polls(org=org).order_by("-poll_date").select_related("category") categories_dict = defaultdict(list) for poll in polls: categories_dict[poll.category.name].append(poll) context["categories"] = sorted( [dict(name=k, polls=v) for k, v in categories_dict.items()], key=lambda c: c["name"] ) context["polls"] = polls context["main_stories"] = Story.objects.filter(org=org, featured=True, is_active=True).order_by("-created_on") return context
def derive_main_poll(self): org = self.request.org return Poll.get_main_poll(org)
def test_brick_polls(self): self.assertFalse(Poll.get_brick_polls(self.uganda)) self.assertFalse(Poll.get_brick_polls(self.nigeria)) poll1 = Poll.objects.create(flow_id=1, title="Poll 1", category=self.health_uganda, is_featured=True, org=self.uganda, created_by=self.admin, modified_by=self.admin) self.assertFalse(Poll.get_brick_polls(self.uganda)) self.assertFalse(Poll.get_brick_polls(self.nigeria)) poll1_question = PollQuestion.objects.create(poll=poll1, title='question poll 1', ruleset_id='101', created_by=self.admin, modified_by=self.admin) self.assertFalse(Poll.get_brick_polls(self.uganda)) self.assertFalse(Poll.get_brick_polls(self.nigeria)) poll2 = Poll.objects.create(flow_id=2, title="Poll 2", category=self.health_uganda, org=self.uganda, created_by=self.admin, modified_by=self.admin) self.assertFalse(Poll.get_brick_polls(self.uganda)) self.assertFalse(Poll.get_brick_polls(self.nigeria)) poll2_question = PollQuestion.objects.create(poll=poll2, title='question poll 2', ruleset_id='202', created_by=self.admin, modified_by=self.admin) self.assertTrue(Poll.get_brick_polls(self.uganda)) self.assertTrue(poll2 in Poll.get_brick_polls(self.uganda)) self.assertFalse(Poll.get_brick_polls(self.nigeria)) poll2.is_active = False poll2.save() self.assertFalse(Poll.get_brick_polls(self.uganda)) self.assertFalse(Poll.get_brick_polls(self.nigeria)) poll2.is_active = True poll2.save() self.health_uganda.is_active = False self.health_uganda.save() self.assertFalse(Poll.get_brick_polls(self.uganda)) self.assertFalse(Poll.get_brick_polls(self.nigeria)) self.health_uganda.is_active = True self.health_uganda.save() poll3 = Poll.objects.create(flow_id=3, title="Poll 3", category=self.health_uganda, org=self.uganda, created_by=self.admin, modified_by=self.admin) self.assertTrue(Poll.get_brick_polls(self.uganda)) self.assertTrue(poll2 in Poll.get_brick_polls(self.uganda)) self.assertTrue(poll3 not in Poll.get_brick_polls(self.uganda)) self.assertFalse(Poll.get_brick_polls(self.nigeria)) poll3_question = PollQuestion.objects.create(poll=poll3, title='question poll 3', ruleset_id='303', created_by=self.admin, modified_by=self.admin) self.assertTrue(Poll.get_brick_polls(self.uganda)) self.assertTrue(poll2 in Poll.get_brick_polls(self.uganda)) self.assertTrue(poll3 in Poll.get_brick_polls(self.uganda)) self.assertFalse(Poll.get_brick_polls(self.nigeria)) poll3.is_featured = True poll3.save() self.assertTrue(Poll.get_brick_polls(self.uganda)) self.assertTrue(poll2 in Poll.get_brick_polls(self.uganda)) self.assertTrue(poll1 in Poll.get_brick_polls(self.uganda)) self.assertEquals(Poll.get_brick_polls(self.uganda)[0], poll1) self.assertEquals(Poll.get_brick_polls(self.uganda)[1], poll2) self.assertFalse(Poll.get_brick_polls(self.nigeria)) poll1.is_featured = False poll1.save() self.assertTrue(Poll.get_brick_polls(self.uganda)) self.assertTrue(poll2 in Poll.get_brick_polls(self.uganda)) self.assertTrue(poll1 in Poll.get_brick_polls(self.uganda)) self.assertEquals(Poll.get_brick_polls(self.uganda)[0], poll2) self.assertEquals(Poll.get_brick_polls(self.uganda)[1], poll1) self.assertFalse(Poll.get_brick_polls(self.nigeria))
def derive_main_poll(self): org = self.request.org return Poll.get_main_poll(org)
def test_poll_get_main_poll(self): self.assertIsNone(Poll.get_main_poll(self.uganda)) self.assertIsNone(Poll.get_main_poll(self.nigeria)) poll1 = Poll.objects.create(flow_id=1, title="Poll 1", category=self.health_uganda, org=self.uganda, created_by=self.admin, modified_by=self.admin) self.assertEquals(unicode(poll1), 'Poll 1') self.assertIsNone(Poll.get_main_poll(self.uganda)) self.assertIsNone(Poll.get_main_poll(self.nigeria)) poll1_question = PollQuestion.objects.create(poll=poll1, title='question poll 1', ruleset_id='101', created_by=self.admin, modified_by=self.admin) self.assertEquals(Poll.get_main_poll(self.uganda), poll1) self.assertIsNone(Poll.get_main_poll(self.nigeria)) poll2 = Poll.objects.create(flow_id=2, title="Poll 2", category=self.health_uganda, org=self.uganda, created_by=self.admin, modified_by=self.admin) poll2_question = PollQuestion.objects.create(poll=poll2, title='question poll 2', ruleset_id='202', created_by=self.admin, modified_by=self.admin) self.assertEquals(Poll.get_main_poll(self.uganda), poll2) self.assertIsNone(Poll.get_main_poll(self.nigeria)) poll3 = Poll.objects.create(flow_id=3, title="Poll 3", category=self.health_uganda, org=self.uganda, created_by=self.admin, modified_by=self.admin) poll3_question = PollQuestion.objects.create(poll=poll3, title='question poll 3', ruleset_id='303', created_by=self.admin, modified_by=self.admin) self.assertEquals(Poll.get_main_poll(self.uganda), poll3) self.assertIsNone(Poll.get_main_poll(self.nigeria)) poll1.is_featured = True poll1.save() self.assertEquals(Poll.get_main_poll(self.uganda), poll1) self.assertIsNone(Poll.get_main_poll(self.nigeria)) poll1.is_active = False poll1.save() self.assertEquals(Poll.get_main_poll(self.uganda), poll3) self.assertIsNone(Poll.get_main_poll(self.nigeria)) self.health_uganda.is_active = False self.health_uganda.save() self.assertIsNone(Poll.get_main_poll(self.uganda)) self.assertIsNone(Poll.get_main_poll(self.nigeria))
def fetch_other_polls_results(org): other_polls = Poll.get_other_polls(org) _fetch_org_polls_results(org, other_polls)
def fetch_brick_polls_results(org): brick_polls = Poll.get_brick_polls(org)[:5] _fetch_org_polls_results(org, brick_polls)
def fetch_brick_polls_results(org): brick_polls = Poll.get_brick_polls(org)[:5] _fetch_org_polls_results(org, brick_polls)
def fetch_other_polls_results(org): other_polls = Poll.get_other_polls(org) _fetch_org_polls_results(org, other_polls)
def fetch_main_poll_results(org): main_poll = Poll.get_main_poll(org) if main_poll: _fetch_org_polls_results(org, [main_poll])