def setUp(self): self.date = datetime.now(timezone.utc) self.reference = Reference.objects.create( url=u"http://bla", title=u"a bla", pub_date=self.date) self.source1 = Reference.objects.create( url=u"http://blaSrc1", title=u"a source", pub_date=self.date) self.source2 = Reference.objects.create( url=u"http://blaSrc2", title=u"a source2", pub_date=self.date) self.reference.sources.add(self.source1) self.reference.sources.add(self.source2) self.user = User.objects.create_user(username="******", password="******") self.user_profile = UserProfile.objects.create(owner=self.user) self.bkm = UserBookmark.objects.create( owner=self.user, reference=self.reference, saved_date=self.date, is_public=True) set_item_tag_names(self.user, self.reference, ["T1","T2"]) self.other_user = User.objects.create_user(username="******", password="******")
def import_user_bookmarks_from_ns_list(user, nsbmk_txt): ref_and_metadata = import_references_from_ns_bookmark_list(nsbmk_txt) bmk_to_process = [] for ref, meta in ref_and_metadata.items(): try: bmk = UserBookmark.objects.get(owner=user, reference=ref) except ObjectDoesNotExist: bmk = UserBookmark(owner=user, reference=ref, saved_date=ref.pub_date) ref.save_count += 1 for src in ref.sources.all(): user.userprofile.sources.add(src) bmk.is_public = meta.is_public bmk.comment = meta.note # pile up the bookmarks for tag attribution bmk_to_process.append((bmk, meta)) with transaction.commit_on_success(): for b, _ in bmk_to_process: b.reference.save() b.save() classif_data_to_save = [] for bmk, meta in bmk_to_process: valid_tags = [t for t in meta.tags if len(t) <= TAG_NAME_MAX_LENGTH] if len(valid_tags) != len(meta.tags): invalid_tags = [t for t in meta.tags if len(t) > TAG_NAME_MAX_LENGTH] logger.error( "Could not import some bmk tags with too long names (%s>%s)" % (",".join(len(t) for t in invalid_tags), TAG_NAME_MAX_LENGTH) ) classif_data_to_save.append(set_item_tag_names(user, bmk.reference, valid_tags)) with transaction.commit_on_success(): for cd in classif_data_to_save: cd.save()
def import_user_bookmarks_from_ns_list(user,nsbmk_txt): ref_and_metadata = import_references_from_ns_bookmark_list(nsbmk_txt) bmk_to_process = [] for ref,meta in ref_and_metadata.items(): try: bmk = UserBookmark.objects.get(owner=user,reference=ref) except ObjectDoesNotExist: bmk = UserBookmark(owner=user,reference=ref, saved_date=ref.pub_date) ref.save_count += 1 for src in ref.sources.all(): user.userprofile.sources.add(src) bmk.is_public = meta.is_public bmk.comment = meta.note # pile up the bookmarks for tag attribution bmk_to_process.append((bmk,meta)) with transaction.commit_on_success(): for b,_ in bmk_to_process: b.reference.save() b.save() classif_data_to_save = [] for bmk,meta in bmk_to_process: valid_tags = [t for t in meta.tags if len(t)<=TAG_NAME_MAX_LENGTH] if len(valid_tags)!=len(meta.tags): invalid_tags = [t for t in meta.tags if len(t)>TAG_NAME_MAX_LENGTH] logger.error("Could not import some bmk tags with too long names (%s>%s)"\ % (",".join(len(t) for t in invalid_tags),TAG_NAME_MAX_LENGTH)) classif_data_to_save.append(set_item_tag_names(user,bmk.reference,valid_tags)) with transaction.commit_on_success(): for cd in classif_data_to_save: cd.save()
def import_user_feedsources_from_opml(user,opml_txt): feeds_and_tags = import_feedsources_from_opml(opml_txt) profile = UserProfile.objects.get(owner=user) classif_data_to_save = [] for feed,tags in feeds_and_tags.items(): profile.web_feeds.add(feed) profile.sources.add(feed.source) valid_tags = [t for t in tags if len(t)<=TAG_NAME_MAX_LENGTH] if len(valid_tags)!=len(tags): invalid_tags = [t for t in tags if len(t)>TAG_NAME_MAX_LENGTH] logger.error("Could not import some source tags with too long names (%s>%s)"\ % (",".join(str(len(t)) for t in invalid_tags), TAG_NAME_MAX_LENGTH)) classif_data_to_save.append(set_item_tag_names(user,feed,valid_tags)) with transaction.commit_on_success(): for cd in classif_data_to_save: cd.save()
def import_user_feedsources_from_opml(user,opml_txt): feeds_and_tags = import_feedsources_from_opml(opml_txt) profile = UserProfile.objects.get(owner=user) classif_data_to_save = [] for feed,tags in feeds_and_tags.items(): profile.web_feeds.add(feed) profile.sources.add(feed.source) valid_tags = [t for t in tags if len(t)<=TAG_NAME_MAX_LENGTH] if len(valid_tags)!=len(tags): invalid_tags = [t for t in tags if len(t)>TAG_NAME_MAX_LENGTH] logger.error("Could not import some source tags with too long names (%s>%s)"\ % (",".join(str(len(t)) for t in invalid_tags), TAG_NAME_MAX_LENGTH)) classif_data_to_save.append(set_item_tag_names(user,feed,valid_tags)) with transaction.atomic(): for cd in classif_data_to_save: cd.save()
def test_set_item_tag_names(self): cd = set_item_tag_names(self.user_a, self.item_1, ["blah", "new"]) self.assertEqual(4, cd.tags.count()) tag_names = [t.name for t in cd.tags.all()] self.assertIn("blah", tag_names) self.assertIn("new", tag_names)
def test_set_item_tag_names(self): cd = set_item_tag_names(self.user_a,self.item_1,["blah","new"]) self.assertEqual(4,cd.tags.count()) tag_names = [t.name for t in cd.tags.all()] self.assertIn("blah", tag_names) self.assertIn("new", tag_names)