示例#1
0
    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
示例#2
0
    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
示例#3
0
文件: views.py 项目: rapidpro/ureport
    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
示例#4
0
文件: views.py 项目: Assaye/ureport
    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
示例#5
0
    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
示例#6
0
文件: views.py 项目: forkkit/ureport
    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
示例#7
0
文件: views.py 项目: obed-ak/ureport
    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
示例#8
0
文件: views.py 项目: Assaye/ureport
    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
示例#9
0
    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
示例#10
0
文件: views.py 项目: rapidpro/ureport
    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
示例#11
0
    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
示例#12
0
文件: views.py 项目: Assaye/ureport
    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
示例#13
0
    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
示例#14
0
def fetch_main_poll_results(org):
    main_poll = Poll.get_main_poll(org)
    if main_poll:
        _fetch_org_polls_results(org, [main_poll])
示例#15
0
文件: views.py 项目: obed-ak/ureport
    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
示例#16
0
 def derive_main_poll(self):
     org = self.request.org
     return Poll.get_main_poll(org)
示例#17
0
文件: tests.py 项目: yeleman/ureport
    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))
示例#18
0
文件: views.py 项目: Assaye/ureport
 def derive_main_poll(self):
     org = self.request.org
     return Poll.get_main_poll(org)
示例#19
0
文件: tests.py 项目: yeleman/ureport
    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))
示例#20
0
def fetch_other_polls_results(org):
    other_polls = Poll.get_other_polls(org)
    _fetch_org_polls_results(org, other_polls)
示例#21
0
def fetch_brick_polls_results(org):
    brick_polls = Poll.get_brick_polls(org)[:5]
    _fetch_org_polls_results(org, brick_polls)
示例#22
0
def fetch_brick_polls_results(org):
    brick_polls = Poll.get_brick_polls(org)[:5]
    _fetch_org_polls_results(org, brick_polls)
示例#23
0
def fetch_other_polls_results(org):
    other_polls = Poll.get_other_polls(org)
    _fetch_org_polls_results(org, other_polls)
示例#24
0
def fetch_main_poll_results(org):
    main_poll = Poll.get_main_poll(org)
    if main_poll:
        _fetch_org_polls_results(org, [main_poll])