Exemplo n.º 1
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()
Exemplo n.º 2
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()
Exemplo n.º 3
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'])
Exemplo n.º 4
0
 def test_parse_tag_string_returns_list_of_tag_names(self):
     self.assertCountEqual(parse_tag_string('book, movie, album'),
                           ['book', 'movie', 'album'])
Exemplo n.º 5
0
 def test_parse_tag_string_deduplicates_tag_names(self):
     self.assertEqual(len(parse_tag_string('book,book,Book,BOOK')), 1)
Exemplo n.º 6
0
 def test_parse_tag_string_handles_invalid_input(self):
     self.assertListEqual(parse_tag_string(None), [])
     self.assertListEqual(parse_tag_string(''), [])
Exemplo n.º 7
0
 def test_parse_tag_string_handles_whitespace(self):
     self.assertCountEqual(
         parse_tag_string('\t  book, movie \t, album, \n\r'),
         ['album', 'book', 'movie'])
Exemplo n.º 8
0
 def test_parse_tag_string_orders_tag_names_alphabetically(self):
     self.assertListEqual(parse_tag_string('book,movie,album'),
                          ['album', 'book', 'movie'])
     self.assertListEqual(parse_tag_string('Book,movie,album'),
                          ['album', 'Book', 'movie'])
Exemplo n.º 9
0
 def test_parse_tag_string_respects_separator(self):
     self.assertCountEqual(parse_tag_string('book movie album', ' '),
                           ['book', 'movie', 'album'])
Exemplo n.º 10
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)