Exemple #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)
Exemple #2
0
def edit(request, bookmark_id: int):
    bookmark = Bookmark.objects.get(pk=bookmark_id)

    if request.method == 'POST':
        form = BookmarkForm(request.POST, instance=bookmark)
        return_url = form.data['return_url']
        if form.is_valid():
            update_bookmark(form.save(commit=False), form.data['tag_string'],
                            request.user)
            return HttpResponseRedirect(return_url)
    else:
        return_url = request.GET.get('return_url')
        form = BookmarkForm(instance=bookmark)

    return_url = return_url if return_url else reverse('bookmarks:index')

    form.initial['tag_string'] = build_tag_string(bookmark.tag_names, ' ')
    form.initial['return_url'] = return_url
    all_tags = get_user_tags(request.user)

    context = {
        'form': form,
        'bookmark_id': bookmark_id,
        'all_tags': all_tags,
        'return_url': return_url
    }

    return render(request, 'bookmarks/edit.html', context)
Exemple #3
0
 def create(self, validated_data):
     bookmark = Bookmark()
     bookmark.url = validated_data['url']
     bookmark.title = validated_data['title']
     bookmark.description = validated_data['description']
     tag_string = build_tag_string(validated_data['tag_names'], ' ')
     return create_bookmark(bookmark, tag_string, self.context['user'])
Exemple #4
0
    def test_should_prefill_bookmark_form_fields(self):
        tag1 = self.setup_tag()
        tag2 = self.setup_tag()
        bookmark = self.setup_bookmark(tags=[tag1, tag2],
                                       title='edited title',
                                       description='edited description')

        response = self.client.get(
            reverse('bookmarks:edit', args=[bookmark.id]))
        html = response.content.decode()

        self.assertInHTML(
            '<input type="text" name="url" '
            'value="{0}" placeholder=" " '
            'autofocus class="form-input" required '
            'id="id_url">'.format(bookmark.url), html)

        tag_string = build_tag_string(bookmark.tag_names, ' ')
        self.assertInHTML(
            '<input type="text" name="tag_string" '
            'value="{0}" autocomplete="off" '
            'class="form-input" '
            'id="id_tag_string">'.format(tag_string), html)

        self.assertInHTML(
            '<input type="text" name="title" maxlength="512" '
            'autocomplete="off" class="form-input" '
            'value="{0}" id="id_title">'.format(bookmark.title), html)

        self.assertInHTML(
            '<textarea name="description" cols="40" rows="4" class="form-input" id="id_description">{0}'
            '</textarea>'.format(bookmark.description), html)
Exemple #5
0
def bookmark_search(context, query: str, tags: [Tag], mode: str = 'default'):
    tag_names = [tag.name for tag in tags]
    tags_string = build_tag_string(tag_names, ' ')
    return {
        'query': query,
        'tags_string': tags_string,
        'mode': mode,
    }
Exemple #6
0
def bookmark_form(form: BookmarkForm,
                  all_tags: List[Tag],
                  auto_close: bool = False):

    all_tag_names = [tag.name for tag in all_tags]
    all_tags_string = build_tag_string(all_tag_names, ' ')

    return {
        'form': form,
        'auto_close': auto_close,
        'all_tags': all_tags_string
    }
Exemple #7
0
def bookmark_form(form: BookmarkForm, all_tags: List[Tag], cancel_url: str, bookmark_id: int = 0, auto_close: bool = False):

    all_tag_names = [tag.name for tag in all_tags]
    all_tags_string = build_tag_string(all_tag_names, ' ')

    return {
        'form': form,
        'auto_close': auto_close,
        'all_tags': all_tags_string,
        'bookmark_id': bookmark_id,
        'cancel_url': cancel_url
    }
Exemple #8
0
def edit(request, bookmark_id: int):
    bookmark = Bookmark.objects.get(pk=bookmark_id)
    if request.method == 'POST':
        form = BookmarkForm(request.POST, instance=bookmark)
        if form.is_valid():
            update_bookmark(form, request.user)
            return HttpResponseRedirect(reverse('bookmarks:index'))
    else:
        form = BookmarkForm(instance=bookmark)

    form.initial['tag_string'] = build_tag_string(bookmark.tag_names, ' ')

    all_tags = get_user_tags(request.user)
    context = {'form': form, 'bookmark_id': bookmark_id, 'all_tags': all_tags}

    return render(request, 'bookmarks/edit.html', context)
Exemple #9
0
 def update(self, instance: Bookmark, validated_data):
     instance.url = validated_data['url']
     instance.title = validated_data['title']
     instance.description = validated_data['description']
     tag_string = build_tag_string(validated_data['tag_names'], ' ')
     return update_bookmark(instance, tag_string, self.context['user'])