Esempio n. 1
0
def index(request):
    page = request.GET.get('page')
    query_string = request.GET.get('q')
    query_set = queries.query_bookmarks(request.user, query_string)
    paginator = Paginator(query_set, _default_page_size)
    bookmarks = paginator.get_page(page)
    tags = queries.query_tags(request.user, query_string)
    tag_names = [tag.name for tag in tags]
    tags_string = build_tag_string(tag_names, ' ')
    return_url = generate_index_return_url(page, query_string)

    if request.GET.get('tag'):
        mod = request.GET.copy()
        mod.pop('tag')
        request.GET = mod

    context = {
        'bookmarks': bookmarks,
        'tags': tags,
        'tags_string': tags_string,
        'query': query_string if query_string else '',
        'empty': paginator.count == 0,
        'return_url': return_url
    }
    return render(request, 'bookmarks/index.html', context)
Esempio n. 2
0
    def test_query_bookmarks_should_search_multiple_tags_ignoring_casing(self):
        self.setup_bookmark_search_data()

        query = queries.query_bookmarks(self.get_or_create_test_user(),
                                        '#Tag1 #TAG2')

        self.assertQueryResult(query, [self.tag1_tag2_bookmarks])
Esempio n. 3
0
    def test_query_bookmarks_should_search_terms_and_tags_combined(self):
        self.setup_bookmark_search_data()

        query = queries.query_bookmarks(self.get_or_create_test_user(),
                                        'term1 #tag1')

        self.assertQueryResult(query, [self.term1_tag1_bookmarks])
Esempio n. 4
0
    def test_query_bookmarks_should_search_multiple_terms(self):
        self.setup_bookmark_search_data()

        query = queries.query_bookmarks(self.get_or_create_test_user(),
                                        'term2 term1')

        self.assertQueryResult(query, [self.term1_term2_bookmarks])
Esempio n. 5
0
def index(request):
    query_string = request.GET.get('q')
    query_set = queries.query_bookmarks(request.user, query_string)
    tags = queries.query_bookmark_tags(request.user, query_string)
    base_url = reverse('bookmarks:index')
    context = get_bookmark_view_context(request, query_set, tags, base_url)
    return render(request, 'bookmarks/index.html', context)
Esempio n. 6
0
    def get_queryset(self):
        user = self.request.user
        # For list action, use query set that applies search and tag projections
        if self.action == 'list':
            query_string = self.request.GET.get('q')
            return queries.query_bookmarks(user, query_string)

        # For single entity actions use default query set without projections
        return Bookmark.objects.all().filter(owner=user)
Esempio n. 7
0
    def test_query_bookmark_tags_should_return_no_matches(self):
        self.setup_tag_search_data()

        query = queries.query_bookmarks(self.get_or_create_test_user(),
                                        'term3')
        self.assertQueryResult(query, [])

        query = queries.query_bookmarks(self.get_or_create_test_user(),
                                        'term1 term3')
        self.assertQueryResult(query, [])

        query = queries.query_bookmarks(self.get_or_create_test_user(),
                                        'term1 #tag2')
        self.assertQueryResult(query, [])

        query = queries.query_bookmarks(self.get_or_create_test_user(),
                                        '#tag3')
        self.assertQueryResult(query, [])
Esempio n. 8
0
    def test_query_bookmarks_should_use_tag_projection(self):
        self.setup_bookmark_search_data()

        # Test projection on bookmarks with tags
        query = queries.query_bookmarks(self.user, '#tag1 #tag2')

        for bookmark in query:
            self.assertEqual(bookmark.tag_count, 2)
            self.assertEqual(bookmark.tag_string, 'tag1,tag2')
            self.assertTrue(bookmark.tag_projection)

        # Test projection on bookmarks without tags
        query = queries.query_bookmarks(self.user, 'term2')

        for bookmark in query:
            self.assertEqual(bookmark.tag_count, 0)
            self.assertEqual(bookmark.tag_string, None)
            self.assertTrue(bookmark.tag_projection)
Esempio n. 9
0
    def test_query_bookmarks_should_not_return_archived_bookmarks(self):
        bookmark1 = self.setup_bookmark()
        bookmark2 = self.setup_bookmark()
        self.setup_bookmark(is_archived=True)
        self.setup_bookmark(is_archived=True)
        self.setup_bookmark(is_archived=True)

        query = queries.query_bookmarks(self.get_or_create_test_user(), '')

        self.assertCountEqual([bookmark1, bookmark2], list(query))
Esempio n. 10
0
    def test_query_bookmarks_should_not_return_archived_bookmarks(self):
        bookmark1 = self.setup_bookmark()
        bookmark2 = self.setup_bookmark()
        self.setup_bookmark(is_archived=True)
        self.setup_bookmark(is_archived=True)
        self.setup_bookmark(is_archived=True)

        query = queries.query_bookmarks(self.get_or_create_test_user(), '')

        self.assertQueryResult(query, [[bookmark1, bookmark2]])
Esempio n. 11
0
    def test_query_bookmarks_should_search_single_tag(self):
        self.setup_bookmark_search_data()

        query = queries.query_bookmarks(self.get_or_create_test_user(),
                                        '#tag1')

        self.assertQueryResult(query, [
            self.tag1_bookmarks, self.tag1_tag2_bookmarks,
            self.term1_tag1_bookmarks
        ])
Esempio n. 12
0
    def test_query_bookmarks_should_return_all_for_empty_query(self):
        self.setup_bookmark_search_data()

        query = queries.query_bookmarks(self.get_or_create_test_user(), '')
        self.assertQueryResult(query, [
            self.other_bookmarks, self.term1_bookmarks,
            self.term1_term2_bookmarks, self.tag1_bookmarks,
            self.term1_tag1_bookmarks, self.tag2_bookmarks,
            self.tag1_tag2_bookmarks
        ])
Esempio n. 13
0
def bookmark_export(request):
    try:
        bookmarks = query_bookmarks(request.user, '')
        file_content = export_netscape_html(bookmarks)

        response = HttpResponse(content_type='text/plain; charset=UTF-8')
        response[
            'Content-Disposition'] = 'attachment; filename="bookmarks.html"'
        response.write(file_content)

        return response
    except Exception:
        return render(
            request, 'settings/index.html',
            {'export_error': 'An error occurred during bookmark export.'})
Esempio n. 14
0
    def test_query_bookmarks_should_only_return_user_owned_bookmarks(self):
        other_user = User.objects.create_user('otheruser',
                                              '*****@*****.**',
                                              'password123')
        owned_bookmarks = [
            self.setup_bookmark(),
            self.setup_bookmark(),
            self.setup_bookmark(),
        ]
        self.setup_bookmark(user=other_user)
        self.setup_bookmark(user=other_user)
        self.setup_bookmark(user=other_user)

        query = queries.query_bookmarks(self.user, '')

        self.assertQueryResult(query, [owned_bookmarks])
Esempio n. 15
0
def index(request):
    page = request.GET.get('page')
    query_string = request.GET.get('q')
    query_set = queries.query_bookmarks(request.user, query_string)
    paginator = Paginator(query_set, _default_page_size)
    bookmarks = paginator.get_page(page)
    tags = queries.query_tags(request.user, query_string)

    if request.GET.get('tag'):
        mod = request.GET.copy()
        mod.pop('tag')
        request.GET = mod

    context = {
        'bookmarks': bookmarks,
        'tags': tags,
        'query': query_string if query_string else '',
        'empty': paginator.count == 0
    }
    return render(request, 'bookmarks/index.html', context)