def test_get_or_create_tags_should_deduplicate_tags(self):
        books_tag = get_or_create_tag('Book', self.user)

        tags = get_or_create_tags(['book', 'Book', 'BOOK'], self.user)

        self.assertEqual(len(tags), 1)
        self.assertListEqual(tags, [books_tag])
Exemple #2
0
def _import_bookmark_tag(netscape_bookmark: NetscapeBookmark, user: User):
    # Either modify existing bookmark for the URL or create new one
    bookmark = _get_or_create_bookmark(netscape_bookmark.href, user)

    bookmark.url = netscape_bookmark.href
    if netscape_bookmark.date_added:
        bookmark.date_added = datetime.utcfromtimestamp(
            int(netscape_bookmark.date_added)).astimezone()
    else:
        bookmark.date_added = timezone.now()
    bookmark.date_modified = bookmark.date_added
    bookmark.unread = False
    bookmark.title = netscape_bookmark.title
    if netscape_bookmark.description:
        bookmark.description = netscape_bookmark.description
    bookmark.owner = user

    bookmark.save()

    # Set tags
    tag_names = parse_tag_string(netscape_bookmark.tag_string)
    tags = get_or_create_tags(tag_names, user)

    bookmark.tags.set(tags)
    bookmark.save()
Exemple #3
0
def _import_bookmark_tag(bookmark_tag: bs4.Tag, user: User):
    link_tag = bookmark_tag.a

    if link_tag is None:
        return

    # Either modify existing bookmark for the URL or create new one
    url = link_tag['href']
    bookmark = _get_or_create_bookmark(url, user)

    bookmark.url = url
    bookmark.date_added = datetime.utcfromtimestamp(int(link_tag['add_date']))
    bookmark.date_modified = bookmark.date_added
    bookmark.unread = link_tag['toread'] == '1'
    bookmark.title = link_tag.string
    bookmark.owner = user

    bookmark.save()

    # Set tags
    tag_string = link_tag['tags']
    tag_names = parse_tag_string(tag_string)
    tags = get_or_create_tags(tag_names, user)

    bookmark.tags.set(tags)
    bookmark.save()
    def test_get_or_create_tags_should_return_tags(self):
        books_tag = get_or_create_tag('Book', self.user)
        movies_tag = get_or_create_tag('Movie', self.user)

        tags = get_or_create_tags(['book', 'movie'], self.user)

        self.assertEqual(len(tags), 2)
        self.assertListEqual(tags, [books_tag, movies_tag])
Exemple #5
0
def untag_bookmarks(bookmark_ids: [Union[int, str]], tag_string: str,
                    current_user: User):
    sanitized_bookmark_ids = _sanitize_id_list(bookmark_ids)
    bookmarks = Bookmark.objects.filter(owner=current_user,
                                        id__in=sanitized_bookmark_ids)
    tag_names = parse_tag_string(tag_string, ' ')
    tags = get_or_create_tags(tag_names, current_user)

    for bookmark in bookmarks:
        bookmark.tags.remove(*tags)
        bookmark.date_modified = timezone.now()

    Bookmark.objects.bulk_update(bookmarks, ['date_modified'])
Exemple #6
0
def _update_bookmark_tags(bookmark: Bookmark, tag_string: str, user: User):
    tag_names = parse_tag_string(tag_string, ' ')
    tags = get_or_create_tags(tag_names, user)
    bookmark.tags.set(tags)