Example #1
0
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')
Example #2
0
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)
Example #3
0
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,
                                      })
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
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')