def hyperestraier_search(request, enc, q): searchphrase = ' AND '.join(q.split()) queryset = [] extra_context = {'mostviewed': cached_sets.most_viewed()[:6], 'q': q, 'get_args': "q=%s" % q, 'send_to_details': localsettings.FEATURE['send_to_details']} he_documents = searcher.search(str(searchphrase)) for he_doc in he_documents: if searcher.get_attr(he_doc, '@flowgram_type') == 'flowgram': flowgram_id = searcher.get_attr(he_doc, '@flowgram_id') matching_flowgram = models.Flowgram.objects.filter(id=flowgram_id) matching_flowgram = matching_flowgram.filter(public=True) | \ matching_flowgram.filter(owner=request.user) if len(matching_flowgram): queryset.append(matching_flowgram[0]) return webhelpers.flowgram_lister(request, enc='html', queryset=queryset, template_name='search/search_results.html', extra_context=extra_context, display_mode='list')
def view_toprated(request, enc): context = get_default_context() context['next'] = '/browse/toprated' controller.record_stat(request, 'view_browse_rate_website', '0', '') return webhelpers.flowgram_lister(request, enc=enc, queryset=cached_sets.top_rated(), template_name='flowgram/view_toprated.html', extra_context=context)
def admin_newest(request, enc): return webhelpers.flowgram_lister(request, enc='html', queryset=cached_sets.admin_newest(), template_name='admin/admin_newest.html', extra_context={ 'mostviewed' : cached_sets.most_viewed()[:6], 'displayAdminTools': True, 'fg_timestamp': True, })
def view_newest(request, enc): context = get_default_context() context['fg_timestamp'] = True context['next'] = '/browse/newest' controller.record_stat(request, 'view_browse_new_website', '0', '') return webhelpers.flowgram_lister(request, enc=enc, queryset=cached_sets.newest(), template_name='flowgram/view_newest.html', extra_context=context)
def view_featured(request, enc): context = {'hero': cached_sets.get_hero(models.feat.FEATURED_PAGE), 'mostviewed': cached_sets.most_viewed()[:6], 'category_bestof_fgs': helpers.get_category_bestof_fgs(), 'next': '/browse/featured', 'send_to_details': localsettings.FEATURE['send_to_details'], 'posts': webhelpers.get_latest_fg_blog_posts(), } controller.record_stat(request, 'view_browse_feat_website', '0', '') return webhelpers.flowgram_lister(request, enc=enc, queryset=cached_sets.get_featured(models.feat.FEATURED_PAGE), template_name='flowgram/view_featured.html', extra_context=context)
def view_favorites(request, enc, user, sort_criterion, prpusort): favs = models.Favorite.objects.filter(owner=user) controller.record_stat(request, 'view_favorites_website', '0', 'fave owner user id = ' + str(user.id)) fav_fgs = [] for favorite in favs: flowgram = favorite.flowgram is_public_str = 'public' if flowgram.public else 'private' if request.user == user: if prpusort == 'all' or prpusort == is_public_str: fav_fgs.append(flowgram) elif flowgram.public: fav_fgs.append(flowgram) (page_owner, active) = (True, 'you') if request.user == user else (False, 'browse') fav_fgs = helpers.sort_flowgrams(fav_fgs, helpers.convert_sort_criterion(sort_criterion, '-modified_at')) extra_context = { 'u': user, 'profile': user.get_profile(), 'fgs': fav_fgs, 'active': active, 'subs_active': localsettings.FEATURE['subscriptions_fw'], 'activesecondary': 'favorites', 'mostviewed': cached_sets.most_viewed()[:6], 'pageowner': page_owner, 'num_favs': len(fav_fgs), 'sort_criterion': sort_criterion, 'pub_priv': prpusort, 'multiple_owners': True, 'sortable': True, 'send_to_details': localsettings.FEATURE['send_to_details'], 'posts': webhelpers.get_latest_fg_blog_posts(), } return webhelpers.flowgram_lister(request, enc='html', queryset=fav_fgs, template_name='flowgram/view_favorites.html', extra_context=extra_context)
def search(request, enc, q): controller.record_stat(request, 'view_search_website', '0', '') if localsettings.FEATURE['use_HEsearch']: return hyperestraier_search(request, enc, q) fgs = models.Flowgram.objects.filter(public=True) if request.user.is_authenticated(): fgs |= models.Flowgram.objects.filter(owner=request.user) # Using filter with a non-sense id because .none returns an EmptyQueueSet, which causes |= to # fail with "TypeError: Cannot merge querysets of different types 'EmptyQuerySet' and # 'QuerySet'.". by_title = by_tag = by_page_url = by_description = fgs.filter(id='NONSENSE_ID') extra_context = {'mostviewed': cached_sets.most_viewed()[:6], 'q': q, 'get_args': "q=%s" % q, 'send_to_details': localsettings.FEATURE['send_to_details']} terms = q.split() query_terms = "%%%s%%" % "%".join(terms) by_title_description = fgs.extra(where=['(title LIKE %s OR description LIKE %s)'], params=[query_terms, query_terms]) if not len(by_title_description): # By title: for term in terms: by_this_title = fgs.filter(title__icontains=term) by_title |= by_this_title # By description: for term in terms: by_this_description = fgs.filter(description__icontains=term) by_description |= by_this_description by_title_description = by_title | by_description # By tag: for term in terms: tags = models.Tag.objects.filter(name=term) by_this_tag = fgs.filter(id__in=[tag.flowgram.id for tag in tags]) by_tag |= by_this_tag search_results = (by_tag | by_page_url | by_title_description).order_by('-created_at') # Check if author exists if len(terms) == 1: try: auth_models.User.objects.get(username=terms[0]) by_username = True except auth_models.User.DoesNotExist: by_username = False extra_context['by_username'] = by_username return webhelpers.flowgram_lister(request, enc='html', queryset=search_results, template_name='search/search_results.html', extra_context=extra_context, display_mode='list')