Exemplo n.º 1
0
    def get_videos_for_languages_haystack(self, languages):
        from utils.multi_query_set import MultiQuerySet

        languages.extend(
            [l[:l.find('-')] for l in languages if l.find('-') > -1])
        languages = list(set(languages))

        pairs_m, pairs_0, langs = [], [], []
        for l1 in languages:
            langs.append(SQ(content='S_{0}'.format(l1)))
            for l0 in languages:
                if l1 != l0:
                    pairs_m.append(self._lang_pair((l1, l0), "M"))
                    pairs_0.append(self._lang_pair((l1, l0), "0"))

        qs_list = []
        qs_list.append(self._filter(self._base_sqs(), pairs_m))
        qs_list.append(
            self._exclude(self._filter(self._base_sqs(), pairs_0), pairs_m))
        qs_list.append(
            self._exclude(
                self._base_sqs().filter(original_language__in=languages),
                pairs_m + pairs_0).order_by('has_lingua_franca'))
        qs_list.append(
            self._exclude(self._filter(self._base_sqs(), langs), pairs_m +
                          pairs_0).exclude(original_language__in=languages))
        qs_list.append(
            self._exclude(self._base_sqs(), langs + pairs_m +
                          pairs_0).exclude(original_language__in=languages))
        mqs = MultiQuerySet(*[qs for qs in qs_list if qs is not None])
        # this is way more efficient than making a count from all the
        # constituent querysets.
        mqs.set_count(TeamVideo.objects.filter(team=self).count())

        return qs_list, mqs
Exemplo n.º 2
0
    def load_popular_videos_volunteer(self, sort, request, user):
        sort_types = {
            'today': 'today_views',
            'week': 'week_views',
            'month': 'month_views',
            'year': 'year_views',
            'total': 'total_views'
        }

        sort_field = sort_types.get(sort, 'week_views')

        rel, rest = self._get_volunteer_sqs(request, user)

        rel = rel.order_by('-%s' % sort_field)[:5]
        rest = rest.order_by('-%s' % sort_field)[:5]

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        context = {'video_list': mqs}

        content = render_to_string('videos/_watch_page.html', context,
                                   RequestContext(request))

        return {'content': content}
Exemplo n.º 3
0
    def load_popular_videos_volunteer(self, sort, request, user):
        sort_types = {
            'today': 'today_views',
            'week': 'week_views', 
            'month': 'month_views', 
            'year': 'year_views', 
            'total': 'total_views'
        }

        sort_field = sort_types.get(sort, 'week_views')

        rel, rest = self._get_volunteer_sqs(request, user)

        rel = rel.order_by('-%s' % sort_field)[:5]
        rest = rest.order_by('-%s' % sort_field)[:5]

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        context = {
            'video_list': mqs
        }

        content = render_to_string('videos/_watch_page.html', context, RequestContext(request))

        return {
            'content': content
        }
Exemplo n.º 4
0
    def load_latest_page_volunteer(self, page, request, user):
        rel, rest = self._get_volunteer_sqs(request, user)
        rel = rel.order_by('-created')
        rest = rest.order_by('-created')

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs, request=request)
Exemplo n.º 5
0
    def load_latest_page_volunteer(self, page, request, user):
        rel, rest = self._get_volunteer_sqs(request, user)
        rel = rel.order_by('-created')
        rest = rest.order_by('-created')

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs, request=request)
Exemplo n.º 6
0
    def load_requested_page_volunteer(self, page, request, user):
        user_langs = get_user_languages_from_request(request)

        rel, rest = self._get_volunteer_sqs(request, user)

        rel = rel.filter(requests_exact__in=user_langs)
        rest = rest.filter(requests_exact__in=user_langs)

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs, request=request)
Exemplo n.º 7
0
    def load_requested_page_volunteer(self, page, request, user):
        user_langs = get_user_languages_from_request(request)

        rel, rest = self._get_volunteer_sqs(request, user)

        rel = rel.filter(requests_exact__in=user_langs)
        rest = rest.filter(requests_exact__in=user_langs)

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs, request=request)
Exemplo n.º 8
0
    def load_featured_page_volunteer(self, page, request, user):
        rel, rest = self._get_volunteer_sqs(request, user)

        rel = rel.filter(featured__gt=datetime.datetime(datetime.MINYEAR, 1, 1)) \
            .order_by('-featured')

        rest = rest.filter(featured__gt=datetime.datetime(datetime.MINYEAR, 1, 1)) \
            .order_by('-featured')

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs, request=request)
Exemplo n.º 9
0
    def load_featured_page_volunteer(self, page, request, user):
        rel, rest = self._get_volunteer_sqs(request, user)

        rel = rel.filter(featured__gt=datetime.datetime(datetime.MINYEAR, 1, 1)) \
            .order_by('-featured')

        rest = rest.filter(featured__gt=datetime.datetime(datetime.MINYEAR, 1, 1)) \
            .order_by('-featured')

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs, request=request)
Exemplo n.º 10
0
    def test_slice_multiple(self):
        qs = list(Video.objects.all())
        qs = qs + qs + qs
        mqs = MultiQuerySet(Video.objects.all(), Video.objects.all(),
                            Video.objects.all())

        self.assertEqual(qs[0:3], list(mqs[0:3]), "MQS[:3] failed.")

        self.assertEqual(qs[0:6], list(mqs[0:6]),
                         "MQS[:6] (entire range) failed.")

        self.assertEqual(qs[0:7], list(mqs[0:7]),
                         "MQS[:7] (out-of-bounds endpoint) failed.")

        self.assertEqual(qs[1:3], list(mqs[1:3]), "MQS[1:3] failed.")

        self.assertEqual(qs[1:6], list(mqs[1:6]),
                         "MQS[1:6] (entire range) failed.")

        self.assertEqual(qs[1:7], list(mqs[1:7]),
                         "MQS[1:7] (out-of-bounds endpoint) failed.")

        self.assertEqual(qs[3:3], list(mqs[3:3]), "MQS[3:3] failed.")

        self.assertEqual(qs[3:6], list(mqs[3:6]),
                         "MQS[3:6] (entire range) failed.")

        self.assertEqual(qs[3:7], list(mqs[3:7]),
                         "MQS[3:7] (out-of-bounds endpoint) failed.")
Exemplo n.º 11
0
    def test_full(self):
        self.assertEqual(list(Video.objects.all()),
                         list(MultiQuerySet(Video.objects.all())),
                         "Full, single MQS didn't match full QS.")

        self.assertEqual(
            list(Video.objects.all()),
            list(
                MultiQuerySet(Video.objects.none(), Video.objects.all(),
                              Video.objects.none())),
            "Full MQS with blanks didn't match full QS.")

        self.assertEqual(
            list(Video.objects.all()) + list(Video.objects.all()),
            list(
                MultiQuerySet(Video.objects.none(), Video.objects.all(),
                              Video.objects.none(), Video.objects.all())),
            "Double MQS with blanks didn't match double full QS.")
Exemplo n.º 12
0
    def load_popular_page_volunteer(self, page, sort, request, user):

        sort_types = {
            'today': 'today_views',
            'week' : 'week_views', 
            'month': 'month_views', 
            'year' : 'year_views', 
            'total': 'total_views'
        }

        sort_field = sort_types.get(sort, 'week_views')

        rel, rest = self._get_volunteer_sqs(request, user)
        rel = rel.order_by('-%s' % sort_field)
        rest = rest.order_by('-%s' % sort_field)

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs,  request=request)
Exemplo n.º 13
0
    def load_popular_page_volunteer(self, page, sort, request, user):

        sort_types = {
            'today': 'today_views',
            'week': 'week_views',
            'month': 'month_views',
            'year': 'year_views',
            'total': 'total_views'
        }

        sort_field = sort_types.get(sort, 'week_views')

        rel, rest = self._get_volunteer_sqs(request, user)
        rel = rel.order_by('-%s' % sort_field)
        rest = rest.order_by('-%s' % sort_field)

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs, request=request)
Exemplo n.º 14
0
    def get_videos_for_languages_haystack(self, languages):
        from utils.multi_query_set import MultiQuerySet

        languages.extend([l[:l.find('-')] for l in 
                           languages if l.find('-') > -1])
        languages = list(set(languages))

        pairs_m, pairs_0, langs = [], [], []
        for l1 in languages:
            langs.append(SQ(content='S_{0}'.format(l1)))
            for l0 in languages:
                if l1 != l0:
                    pairs_m.append(self._lang_pair((l1, l0), "M"))
                    pairs_0.append(self._lang_pair((l1, l0), "0"))

        qs_list = []
        qs_list.append(self._filter(self._base_sqs(), pairs_m))
        qs_list.append(self._exclude(self._filter(self._base_sqs(), pairs_0), 
                                     pairs_m))
        qs_list.append(self._exclude(
                self._base_sqs().filter(
                    original_language__in=languages), 
                pairs_m + pairs_0).order_by('has_lingua_franca'))
        qs_list.append(self._exclude(
                self._filter(self._base_sqs(), langs),
                pairs_m + pairs_0).exclude(original_language__in=languages))
        qs_list.append(self._exclude(
                self._base_sqs(), 
                langs + pairs_m + pairs_0).exclude(
                original_language__in=languages))
        mqs = MultiQuerySet(*[qs for qs in qs_list if qs is not None])
        # this is way more efficient than making a count from all the 
        # constituent querysets.
        mqs.set_count(TeamVideo.objects.filter(team=self).count())

        return qs_list, mqs
Exemplo n.º 15
0
    def test_slice(self):
        qs = Video.objects.all()
        mqs = MultiQuerySet(Video.objects.all())

        self.assertEqual(list(qs[0:1]), list(mqs[0:1]), "MQS[:1] failed.")

        self.assertEqual(list(qs[0:2]), list(mqs[0:2]), "MQS[:2] failed.")

        self.assertEqual(list(qs[0:3]), list(mqs[0:3]),
                         "MQS[:3] (out-of-bounds endpoint) failed.")

        self.assertEqual(list(qs[1:3]), list(mqs[1:3]), "MQS[1:3] failed.")

        self.assertEqual(list(qs[2:3]), list(mqs[2:3]), "MQS[2:3] failed.")

        self.assertEqual(list(qs[1:1]), list(mqs[1:1]),
                         "MQS[1:1] (empty slice) failed.")