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 }
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
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}
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)
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)
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)
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)
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)
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