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])
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()
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])
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'])
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)