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)
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)
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'])
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)
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, }
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 }
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 }
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)
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'])